forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   Основной форум (http://forum.boolean.name/forumdisplay.php?f=49)
-   -   Конвертирование кодировки utf для отображk (http://forum.boolean.name/showthread.php?t=7197)

Kurdt 15.10.2008 18:36

Конвертирование кодировки utf для отображk
 
Ктото знает как utf кодировку перекодировать в родную телефона, чтоб она нормально отображалась в форме
вот пример текста (Чувствуешь, кто-то нежно целует твои РіСѓР±С‹ - это СЏ нежно целую тебя перед СЃРЅРѕРј. РЎРїРѕРєРѕР№РЅРѕР№ ночи!
*)

Phantom 16.10.2008 02:08

Ответ: Конвертирование кодировки utf для отобра
 
http://forum.boolean.name/showthread.php?t=6856

Kurdt 16.10.2008 14:02

Re: Конвертирование кодировки utf для отображ&
 
Спс, щас поробую

Kurdt 16.10.2008 14:50

Re: Конвертирование кодировки utf для отображ&
 
а как передать не ресурс а сроку?

beZ_probleM 16.10.2008 15:52

Ответ: Конвертирование кодировки utf для отобра
 
Код:

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;

...

var str:string;
...

str:=StrToUtf8(тут твоя строка);


у меня работает ;)

Kurdt 16.10.2008 16:39

Re: Конвертирование кодировки utf для отображ&
 
у меня не рабоатет (

beZ_probleM 16.10.2008 17:03

Ответ: Конвертирование кодировки utf для отобра
 
оно работает когда текст в формате UTF-8

Kurdt 16.10.2008 17:32

Re: Конвертирование кодировки utf для отображ&
 
Чувствуешь, кто-то нежно целует твои губы - это я нежно целую тебя перед сном. Спокойной ночи!

это утф 8 но он никак не реагирует...

ViNT 16.10.2008 17:51

Ответ: Конвертирование кодировки utf для отобра
 
Вроде как UTF и UTF-8 разные кодировки, перекодировать нужно. Kurdt, приложи файл в UTF, попробую разобраться, как его перекодировать.

Kurdt 16.10.2008 21:58

Re: Конвертирование кодировки utf для отображ&#107
 
вот http://webfile.ru/2319205
почемуто вложения не работают

Phantom 16.10.2008 23:48

Ответ: Конвертирование кодировки utf для отобра
 
UTF - это, как я понимаю, семейство кодировок. Туда входят UTF-8, UTF-16 и другие. Моя функция преобразует считанный из ресурса текст в UTF-8 в UNICODE, который можно отображать в Java. Перекодируются все возможные символы, любого языка, которые только может отобразить UNICODE/UTF-8 (даже значки всякие прикольные, вот только главное, чтобы тел их поддерживал, но если не поддерживает, то конвертация всё равно произойдёт, просто тел отобразит такие символы как квадратики или точки). НО! Если в тексте ресурса, который скармливаем моей функции находится хотя бы один символ, который закодирован НЕ В UTF-8, то функция возвращает пустую строку (можно исправить это, чтобы просто пропускала, например, такие символы, но я себе цель ставил просто побыстрее написать и затестить, будет ли работать).
beZ_probleM, твоя функция, как я понял, конвертирует из UTF-8 только узкий диапазон символов, в который входят русские буквы. А моя перекодирует полный диапазон всех символов (горжуся собой, гг). =)
Цитата:

а как передать не ресурс а сроку?
Сроки, тьфу ты, то есть сТроки в Java сразу принимают вид юникода. То есть если ты присвоишь строке что-то подобное:
Чувствуешь, кто-то нежно целует твои губы - это я нежно целую тебя перед сном. Спокойной ночи!
, то каждый из байтов примет вид юникода. Перекодировку нужно делать именно при чтении из ресурса или интернета, или файла из файловой системы. Но как запихуть в исходник, например, строку юникодную, в которой есть разные национальные символы - я сам не знаю. Точнее знаю, но вам этот способ не понравится. Например так (код на Java):
PHP код:

String s = (char)0x1040+(char)0x1041+(char)0x1042

Создастся строка из трёх символов UNICODE с соответствующими кодами. Целые тексты так набирать не очень удобно, поэтому, если кто-то знает, как в исходник скормить UNICODE, то объясните. На скорость и размер кода это никак не влияет, так как при компиляции любая заданная строка в конечном классе принимает вид юникода. Неважно, явно мы написали что-то вроде:
PHP код:

String s "Привет!!! =)"

или по кодам символов, как я написал выше.

Kurdt 17.10.2008 12:55

Re: Конвертирование кодировки utf для отображ&
 
я загружаю с интерента строку и у меня там вместо текста вот такие крякозяблы выдает
Чувствуешь, кто-то нежно С

тоесть автоматически не переводит, почему ? Может в начало строки нада чтото вставить?

Phantom 17.10.2008 13:45

Ответ: Конвертирование кодировки utf для отобра
 
Через мою функцию пропускаешь? Если нет, токрякозябры и будут.

Kurdt 17.10.2008 17:43

Re: Конвертирование кодировки utf для отображ&
 
Это 2 байтный уникод

ViNT 17.10.2008 22:55

Ответ: Re: Конвертирование кодировки utf для отображ&
 
Цитата:

Сообщение от Kurdt (Сообщение 89054)
Это 2 байтный уникод

Не обязательно, в инете кодировка может быть какая угодно (ISO, KOI, WIN-1251, UTF).


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

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