Форум: "Начинающим";
Текущий архив: 2009.04.26;
Скачать: [xml.tar.bz2];
ВнизЧто не так с utf8? Найти похожие ветки
← →
пикассо (2009-03-16 17:50) [0]Всем привет!
Нужно проверить, является ли строка строкой unicode и, если да, то перекодировать в ansi:
if IsTextUnicode(PChar(Text), Length(Text), nil) then
Text := Utf8ToAnsi(Text);
но проверка не работает. Что я не так делаю?
PS. Я не так спросил или что-то не то?
← →
Palladin © (2009-03-16 17:57) [1]хм... попробуй IsTextUnicode(@Text[1], Length(Text), nil)
← →
пикассо (2009-03-16 18:02) [2]
> Palladin © (16.03.09 17:57) [1]
не желает(
← →
Palladin © (2009-03-16 18:05) [3]ну значит она не является unicode :)
← →
sniknik © (2009-03-16 18:07) [4]насколько знаю utf8 это не совсем юникод... даже файлы могут быть как с BOM так и без него, т.е. это попросту соглашение типа "вот эту строку нужно интерпретировать так". но если нет символов > #128 то строка автоматом будет = ansy/oem.
← →
пикассо (2009-03-16 18:17) [5]
> Palladin © (16.03.09 18:05) [3]
ну я не знаю... если выполнить Utf8ToAnsi, то появляется читабельный текст...
> sniknik © (16.03.09 18:07) [4]
как быть-то? Строка может быть формата utf8 - надо переводить...
← →
Медвежонок Пятачок © (2009-03-16 18:19) [6]утф-8 это не юникод, а транспортное представление.
как base64, например.
← →
пикассо (2009-03-16 18:24) [7]
> Медвежонок Пятачок © (16.03.09 18:19) [6]
мне нужна процедура IsTextUtf8()... или как ее сделать.
← →
Palladin © (2009-03-16 18:31) [8]да в общем то никак, но предположить можно :)
← →
Медвежонок Пятачок © (2009-03-16 18:32) [9]Много байтов $D0 - значит наверное может быть точно это наверное utf-8
:)
← →
пикассо (2009-03-16 19:08) [10]
> Palladin © (16.03.09 18:31) [8]
я одно большое ухо
> Медвежонок Пятачок © (16.03.09 18:32) [9]
> Много байтов $D0
что это?
А как какой-нибудь NotePad это определяет?
← →
Медвежонок Пятачок © (2009-03-16 19:14) [11]Так и определяет. На байты смотрит и определяет.
Больше-то смотреть не на что.
← →
Palladin © (2009-03-16 19:26) [12]
> пикассо (16.03.09 19:08) [10]
нотепады тоже предполагают
хотя если речь идет о читаемом тексте, тоFunction MaybeUTF8(Const s:String):Boolean;
Begin
Result:=Pos(#208,s)<>0;
End;
выдаст очень сильноверновероятный результат :)
← →
пикассо (2009-03-16 20:01) [13]
> Palladin © (16.03.09 19:26) [12]
спасибо, попрробую
← →
Anatoly Podgoretsky © (2009-03-16 20:40) [14]Не надо он шутит.
← →
sniknik © (2009-03-16 20:42) [15]> Больше-то смотреть не на что.
у файлов есть префикс - BOM (както это расшифровывается, не помню), хотя его может и не быть... см. [4], не уверен что тогда NotePad его правильно поймет.
← →
sniknik © (2009-03-16 20:53) [16]> не уверен что тогда NotePad его правильно поймет.
хм. понимает... тогда да действительно, он точно контекст смотрит.
← →
Palladin © (2009-03-16 21:11) [17]
> BOM (както это расшифровывается, не помню)
ВсеОбъемныйМаркер :)
#FF#FE у юникодов, у утф8 нет ничего... приемщик должен быть уведомлен передатчиком, что прийдет утф8...
← →
Anatoly Podgoretsky © (2009-03-16 21:22) [18]> sniknik (16.03.2009 20:42:15) [15]
Byte Order Marker
← →
sniknik © (2009-03-16 21:32) [19]> у утф8 нет ничего...
есть! но не всегда. я делал обмен по utf8 и мне давали спецификацию. могу в проге посмотреть что за цифры там идут для него.
← →
sniknik © (2009-03-16 21:41) [20]прога не понадобилась, и так нашел.
http://www.unicode.org/faq/utf_bom.html#BOM
правда не вижу тут, что оно не всегда используется, но этому думаю ты поверишь, т.к. судя по всему только такие файлы и видел.
← →
Vetal (2009-03-16 22:54) [21]
> Palladin © (16.03.09 21:11) [17]
> #FF#FE у юникодов, у утф8 нет ничего... приемщик должен
> быть уведомлен передатчиком, что прийдет утф8...
Но это не мешает проверить утф8 текст или нет.
http://ru.wikipedia.org/wiki/UTF8
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.04.26;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.006 c