forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   русский текст из .txt ресурса (http://forum.boolean.name/showthread.php?t=7194)

beZ_probleM 15.10.2008 08:38

русский текст из .txt ресурса
 
Значить так, код должне выводить русский текст из текстового файла в ресурсе. Но проблема в том что ОН НЕ ВЫВОДИТСО ... выводятся токо какието иероглифы и получаетсо что ета функцыя(см.ниже) не работает??о_О потомучто функцыя about_rasa не возвращает русский текст а какието кубики вместо букв... что не правильно?? говорят функцыя StrToUtf8 работает...

Код:

Function StrToUtf8(s: string;): string; // Корректирует русскую кодировку в строках взятых из ресурсов...
var i, c: integer; ch: char; ss: string;
begin
        if (pos(s,chr(65488))<>-1) or (pos(s,chr(65489))<>-1) then begin // если строка содержит русские симовлы, то
                for i:=1 to Length(s) do begin // перебираем строку
                        ch:=GetChar(s,i-1); c:=ord(ch);        // берем по байтику
                        if c=65488 then begin                                // если байт равен 65488, то следующий байт отвечает за русскую букву
                                ss:=ss+CHR(ord(GetChar(s,i))-64384);        // находим русскую букву и запоминаем
                                i:=i+1;                                                                                                                                // это чтобы мы перешли на следующую букву, а не брали следующий байт
                        end
                        else begin
                                if c=65489 then begin                                                // то же самое но с другим байт-кодом
                                        ss:=ss+chr(ord(GetChar(s,i))-64320);
                                        i:=i+1;
                                end
                                else ss:=ss+ch;                                                                                // если это не русская буква, то просто ее добавим
                        end;
                end;
                StrToUtf8:=ss;                                                        // возвращаем откорректированный текст
        end
        else StrToUtf8:=s;                        // если строка не содержала русских букв, то просто ее и возвратим...
end;

function about_rasa(a:string):string;
  var res : resource;
  begin 
    res := openResource('/'+a+'.txt');
    if (resourceAvailable(res)) then about_rasa:=StrToUtf8(readLine(res));
    closeResource(res);
  end;


Phantom 15.10.2008 09:03

Ответ: русский текст из .txt ресурса
 
Странный какой-то код у тебя. В какой кодировке текст в файле? UTF-8? Посмотри это: http://forum.boolean.name/showthread.php?t=6856

beZ_probleM 16.10.2008 14:45

Ответ: русский текст из .txt ресурса
 
Проблема какбы решена. Я сохранял .txt-файлы в кодировке UTF-8 и оно нормально читает русский текст. НО перед этим русским текстом откудато берётсо и выводитсо три кубика

например:
̕▓̕▓̕▓ето наш русский текст из файла

Шо ето за кубики? оО

Phantom 16.10.2008 23:57

Ответ: русский текст из .txt ресурса
 
О_о Ты, наверно, сохраняешь текст не в UTF-8, а UNICODE BOM!

EVIL_USER 17.10.2008 00:19

Ответ: русский текст из .txt ресурса
 
Кубики это метка кодировки, блокнот добавляет 3 байта.
Сотри винхексом.

Phantom 17.10.2008 00:32

Ответ: русский текст из .txt ресурса
 
Я думал, UTF-8 не добавляет метку. Видимо на этом не задерживался при ковырянии кодировки. гг.

ViNT 17.10.2008 23:04

Ответ: русский текст из .txt ресурса
 
С этой меткой вообще что-то странное, байты видны только в HEX-режиме, если даже читать файл в потоке (под вындоуз), байты метки не читаются.

Phantom 18.10.2008 01:37

Ответ: русский текст из .txt ресурса
 
о_О_о


Часовой пояс GMT +4, время: 12:29.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot