|
Основной форум Сюда все проблемы связанные с программированием. |
15.10.2008, 18:36
|
#1
|
ПроЭктировщик
Регистрация: 28.03.2007
Сообщений: 194
Написано 7 полезных сообщений (для 25 пользователей)
|
Конвертирование кодировки utf для отображk
Ктото знает как utf кодировку перекодировать в родную телефона, чтоб она нормально отображалась в форме
вот пример текста (Чувствуешь, кто-то нежно целует твои РіСѓР±С‹ - это СЏ нежно целую тебя перед СЃРЅРѕРј. РЎРїРѕРєРѕР№РЅРѕР№ ночи!
*)
Последний раз редактировалось Kurdt, 15.10.2008 в 18:50.
|
(Offline)
|
|
16.10.2008, 02:08
|
#2
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Конвертирование кодировки utf для отобра
|
(Offline)
|
|
16.10.2008, 14:02
|
#3
|
ПроЭктировщик
Регистрация: 28.03.2007
Сообщений: 194
Написано 7 полезных сообщений (для 25 пользователей)
|
Re: Конвертирование кодировки utf для отображ&
Спс, щас поробую
|
(Offline)
|
|
16.10.2008, 14:50
|
#4
|
ПроЭктировщик
Регистрация: 28.03.2007
Сообщений: 194
Написано 7 полезных сообщений (для 25 пользователей)
|
Re: Конвертирование кодировки utf для отображ&
а как передать не ресурс а сроку?
|
(Offline)
|
|
16.10.2008, 15:52
|
#5
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: Конвертирование кодировки 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(тут твоя строка);
у меня работает
|
(Offline)
|
|
16.10.2008, 16:39
|
#6
|
ПроЭктировщик
Регистрация: 28.03.2007
Сообщений: 194
Написано 7 полезных сообщений (для 25 пользователей)
|
Re: Конвертирование кодировки utf для отображ&
у меня не рабоатет (
|
(Offline)
|
|
16.10.2008, 17:03
|
#7
|
ПроЭктировщик
Регистрация: 31.03.2008
Сообщений: 134
Написано 8 полезных сообщений (для 8 пользователей)
|
Ответ: Конвертирование кодировки utf для отобра
оно работает когда текст в формате UTF-8
|
(Offline)
|
|
16.10.2008, 17:32
|
#8
|
ПроЭктировщик
Регистрация: 28.03.2007
Сообщений: 194
Написано 7 полезных сообщений (для 25 пользователей)
|
Re: Конвертирование кодировки utf для отображ&
Чувствуешь, кто-то нежно целует твои губы - это я нежно целую тебя перед сном. Спокойной ночи!
это утф 8 но он никак не реагирует...
|
(Offline)
|
|
16.10.2008, 17:51
|
#9
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Конвертирование кодировки utf для отобра
Вроде как UTF и UTF-8 разные кодировки, перекодировать нужно. Kurdt, приложи файл в UTF, попробую разобраться, как его перекодировать.
|
(Offline)
|
|
16.10.2008, 21:58
|
#10
|
ПроЭктировщик
Регистрация: 28.03.2007
Сообщений: 194
Написано 7 полезных сообщений (для 25 пользователей)
|
Re: Конвертирование кодировки utf для отображk
вот http://webfile.ru/2319205
почемуто вложения не работают
|
(Offline)
|
|
16.10.2008, 23:48
|
#11
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Конвертирование кодировки utf для отобра
UTF - это, как я понимаю, семейство кодировок. Туда входят UTF-8, UTF-16 и другие. Моя функция преобразует считанный из ресурса текст в UTF-8 в UNICODE, который можно отображать в Java. Перекодируются все возможные символы, любого языка, которые только может отобразить UNICODE/UTF-8 (даже значки всякие прикольные, вот только главное, чтобы тел их поддерживал, но если не поддерживает, то конвертация всё равно произойдёт, просто тел отобразит такие символы как квадратики или точки). НО! Если в тексте ресурса, который скармливаем моей функции находится хотя бы один символ, который закодирован НЕ В UTF-8, то функция возвращает пустую строку (можно исправить это, чтобы просто пропускала, например, такие символы, но я себе цель ставил просто побыстрее написать и затестить, будет ли работать).
beZ_probleM, твоя функция, как я понял, конвертирует из UTF-8 только узкий диапазон символов, в который входят русские буквы. А моя перекодирует полный диапазон всех символов (горжуся собой, гг). =)
а как передать не ресурс а сроку?
|
Сроки, тьфу ты, то есть сТроки в Java сразу принимают вид юникода. То есть если ты присвоишь строке что-то подобное:
Чувствуешь, кто-то нежно целует твои губы - это я нежно целую тебя перед сном. Спокойной ночи!
, то каждый из байтов примет вид юникода. Перекодировку нужно делать именно при чтении из ресурса или интернета, или файла из файловой системы. Но как запихуть в исходник, например, строку юникодную, в которой есть разные национальные символы - я сам не знаю. Точнее знаю, но вам этот способ не понравится. Например так (код на Java):
String s = (char)0x1040+(char)0x1041+(char)0x1042;
Создастся строка из трёх символов UNICODE с соответствующими кодами. Целые тексты так набирать не очень удобно, поэтому, если кто-то знает, как в исходник скормить UNICODE, то объясните. На скорость и размер кода это никак не влияет, так как при компиляции любая заданная строка в конечном классе принимает вид юникода. Неважно, явно мы написали что-то вроде:
String s = "Привет!!! =)";
или по кодам символов, как я написал выше.
|
(Offline)
|
|
17.10.2008, 12:55
|
#12
|
ПроЭктировщик
Регистрация: 28.03.2007
Сообщений: 194
Написано 7 полезных сообщений (для 25 пользователей)
|
Re: Конвертирование кодировки utf для отображ&
я загружаю с интерента строку и у меня там вместо текста вот такие крякозяблы выдает
Чувствуешь, кто-то нежно С
тоесть автоматически не переводит, почему ? Может в начало строки нада чтото вставить?
|
(Offline)
|
|
17.10.2008, 13:45
|
#13
|
Элита
Регистрация: 14.06.2008
Адрес: Украина, Киев
Сообщений: 2,273
Написано 754 полезных сообщений (для 1,833 пользователей)
|
Ответ: Конвертирование кодировки utf для отобра
Через мою функцию пропускаешь? Если нет, токрякозябры и будут.
|
(Offline)
|
|
17.10.2008, 17:43
|
#14
|
ПроЭктировщик
Регистрация: 28.03.2007
Сообщений: 194
Написано 7 полезных сообщений (для 25 пользователей)
|
Re: Конвертирование кодировки utf для отображ&
Это 2 байтный уникод
|
(Offline)
|
|
17.10.2008, 22:55
|
#15
|
Модератор
Регистрация: 03.04.2007
Сообщений: 2,252
Написано 597 полезных сообщений (для 817 пользователей)
|
Ответ: Re: Конвертирование кодировки utf для отображ&
Сообщение от Kurdt
Это 2 байтный уникод
|
Не обязательно, в инете кодировка может быть какая угодно (ISO, KOI, WIN-1251, UTF).
|
(Offline)
|
|
Ваши права в разделе
|
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 06:35.
|