Форум: "Начинающим";
Текущий архив: 2010.02.14;
Скачать: [xml.tar.bz2];
ВнизUTF-8 -> ANSI Найти похожие ветки
← →
Нагуглить_не_смог (2009-12-13 17:46) [0]Как в строке заменить все UTF-8 символы на их ansi эквиваленты? Есть массив с utf кодами и массив с соответствующими ansi.
["U+4D9", "U+4A3", "U+493", "U+4AF", "U+4B1", "U+49B", "U+4E9", "U+4BB", "U+4D8", "U+4A2", "U+492", "U+4AE", "U+4B0", "U+49A", "U+4E8", "U+4BA"]
["є", "њ", "ѓ", "‰", "±", "ќ", "µ", "Ћ", "Є", "Њ", "Ѓ", "‡", "¦", "Ќ", "¤", "Ћ"]
← →
Нагуглить_не_смог (2009-12-13 17:54) [1]Utf8ToAnsi - не помог. Он заменяет символы из набора на символ "?".
← →
sniknik © (2009-12-13 18:04) [2]> Он заменяет символы из набора на символ "?".
что значит это не utf-8.
← →
Нагуглить_не_смог (2009-12-13 18:25) [3]Возможно, UTF-16. Но как заменить?
← →
Нагуглить_не_смог (2009-12-13 19:09) [4]Вообщем вот:
Символ Шестнадцатеричный код Десятичный код
Ә 04D8 1240
ә 04D9 1241
Ғ 0492 1170
ғ 0493 1171
Қ 049A 1178
қ 049B 1179
Ң 04A2 1186
ң 04A3 1187
Ө 04E8 1256
ө 04E9 1257
Ұ 04B0 1200
ұ 04B1 1201
Ү 04AE 1198
Нужно заменить. А как это сделать?
ү 04AF 1199
Һ 04BA 1210
һ 04BB 1211
I 0049 (есть в ANSI) 0073 (есть в ANSI)
i 0069 (есть в ANSI) 0105 (есть в ANSI)
← →
Нагуглить_не_смог (2009-12-13 19:32) [5]Ставлю вопрос по другому.
На входе строка String s := "Әтра-та-та";
if (magicFunction(s[1]) == 1240) { System.out.println("We did it!"); }
Нужна эта магическая функция... На Delphi.
← →
sniknik © (2009-12-13 19:46) [6]if s[1] = #1240 then
s - вайдестринг
← →
Нагуглить_не_смог (2009-12-13 21:42) [7]Чтот с WideString не вышло. :( А можно как-то по символу его код получить? Как Ord для ANSI?
← →
Омлет © (2009-12-13 21:58) [8]http://delphiworld.narod.ru/base/widestr_to_str.html
← →
Anatoly Podgoretsky © (2009-12-13 22:11) [9]> Нагуглить_не_смог (13.12.2009 21:42:07) [7]
Можно в справке прочитать, что такое ORD
И как работать с WideString
← →
sniknik © (2009-12-13 22:17) [10]> Чтот с WideString не вышло. :(
+
>> что значит это не utf-8.
- значит не юникод.
> А можно как-то по символу его код получить? Как Ord для ANSI?
вы будете смеяться но можно... функция Ord (неожиданно правда?)
> Омлет ©
будь проще, конвертирование в дельфи давно уже делается так
string:= widestring; и наоборот widestring:= string;
(к примеру в ADO строка конекта типа вайдестринг, а в дельфи (D7 например) компоненты/строки в ansi и это кто нибудь замечает? просто присваивают. и обратно, значения из базы в юникоде разве требуют каких то заморочек? нет, опять таки простым присвоением обходятся...)
← →
Нагуглить_не_смог (2009-12-14 09:07) [11]Вот строка на входе: "Қазақстан. астам ұлт өкілдері тұрады"
s:widestring;
begin
s:= Edit1.Text;
Edit2.Clear;
//Edit2.Text := StringToWideString(Edit1.Text, 1251);
for I := 0 to Length(s) do Edit2.Text :=Edit2.Text+ IntToStr(Ord(s[i])) +";";
Не работает, хоть убейте. :( Ord возвращает 63. :(
A Ord(WideChar(1178)) == 1178
← →
Anatoly Podgoretsky © (2009-12-14 09:12) [12]А чего ты хочешь для ANSI - s:= Edit1.Text;
A Ord(WideChar("ұ")) = ?
Для тебя рабочим решением будет переход на D2010
← →
sniknik © (2009-12-14 09:25) [13]> s:= Edit1.Text;
а какого типа Edit1.Text как думаешь? говорили же, конвертация делается простым присвоением, и во все стороны а не только в желаемую.
убери "слабое звено" и проверь еще раз, так
s:= "Қазақстан. астам ұлт өкілдері тұрады";
...
← →
sniknik © (2009-12-14 09:36) [14]кстати редактор в IDE дельфи тоже не понимает юникода, т.что ни моя проверка ни Ord(WideChar("ұ")) не пойдет...
но можно из файла например читать.
> Для тебя рабочим решением будет переход на D2010
или установка TNT контролов (или как они там сейчас называются в платной ипостаси).
← →
sniknik © (2009-12-14 09:40) [15]> кстати редактор в IDE дельфи
D7 имеется ввиду.
и еще кстати, вот с этого ([11]) надо начинать, т.е. с того что делаешь, а не с каких то самопридуманных замен неизвестно чего и неизвестно для чего...
← →
Anatoly Podgoretsky © (2009-12-14 10:14) [16]> sniknik (14.12.2009 09:36:14) [14]
Переход на TNT также требует смеы версии Дельфи, на версию не нже D2006 - из-за редактора и запис в файл, в формате UTF8
← →
sniknik © (2009-12-14 10:23) [17]> Переход на TNT также требует смеы версии Дельфи
ну, я когда пробовал не переходил, но я конечно в ide редакторе ничего и не писал кроме как по русски/английски (т.е. том что поддерживается)... вполне устраивало то, что в рантайм/компонентах юникод был (устраивало в том смысле, что сделал вывод - "если вдруг понадобится то можно использовать").
← →
Anatoly Podgoretsky © (2009-12-14 11:28) [18]> sniknik (14.12.2009 10:23:17) [17]
Я пользовался, скажу неприятное зрелище, стоит только запустить проект на другой локализации и сохранть, в результате получим испорченый проект с крякозябрами вместо русских букв, а у меня к тому же более двух языков. Пришлось сменить Дельфи.
← →
Нагуглить_не_смог (2009-12-16 16:53) [19]Всем большое спасибо! Очень выручили. Переход на Delphi 2009 действительно помог. :)))
← →
Омлет © (2009-12-16 18:39) [20]> Переход на Delphi 2009 действительно помог
Богатый.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2010.02.14;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.005 c