Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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.004 c
1-1237879677
alolya
2009-03-24 10:27
2010.02.14
Проблема к компонентами на базе Rich


2-1260911668
Лёша
2009-12-16 00:14
2010.02.14
Диалог выбора директории.


15-1259789497
Игорь Шевченко
2009-12-03 00:31
2010.02.14
Линукс тоже дырки закрывает


2-1260815777
Dragon-zla
2009-12-14 21:36
2010.02.14
Из файла в список


15-1260377677
GDI+
2009-12-09 19:54
2010.02.14
Изомерия молекулы этилового спирта.





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский