Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Что не так с utf8?


Страницы:   1 2

пикассо ©   (2009-03-16 17:50:00) 

Всем привет!
Нужно проверить, является ли строка строкой unicode и, если да, то перекодировать в ansi:

if IsTextUnicode(PChar(Text), Length(Text), nil) then
  Text := Utf8ToAnsi(Text);

но проверка не работает. Что я не так делаю?

PS. Я не так спросил или что-то не то?


Vetal   (2009-03-16 22:54:00) [1]


> Palladin ©   (16.03.09 21:11) [17]



> #FF#FE у юникодов, у утф8 нет ничего... приемщик должен
> быть уведомлен передатчиком, что прийдет утф8...


Но это не мешает проверить утф8 текст или нет.
http://ru.wikipedia.org/wiki/UTF8


sniknik   (2009-03-16 21:41:00) [2]

прога не понадобилась, и так нашел.
http://www.unicode.org/faq/utf_bom.html#BOM
правда не вижу тут, что оно не всегда используется, но этому думаю ты поверишь, т.к. судя по всему только такие файлы и видел.


sniknik   (2009-03-16 21:32:00) [3]

> у утф8 нет ничего...
есть! но не всегда. я делал обмен по utf8 и мне давали спецификацию. могу в проге посмотреть что за цифры там идут для него.


Anatoly Podgoretsky   (2009-03-16 21:22:00) [4]

> sniknik  (16.03.2009 20:42:15)  [15]

Byte Order Marker


Palladin   (2009-03-16 21:11:00) [5]


> BOM (както это расшифровывается, не помню)

ВсеОбъемныйМаркер :)
#FF#FE у юникодов, у утф8 нет ничего... приемщик должен быть уведомлен передатчиком, что прийдет утф8...


sniknik   (2009-03-16 20:53:00) [6]

> не уверен что тогда NotePad его правильно поймет.
хм. понимает... тогда да действительно, он точно контекст смотрит.


sniknik   (2009-03-16 20:42:00) [7]

> Больше-то смотреть не на что.
у файлов есть префикс - BOM (както это расшифровывается, не помню), хотя его может и не быть... см. [4], не уверен что тогда NotePad его правильно поймет.


Anatoly Podgoretsky   (2009-03-16 20:40:00) [8]

Не надо он шутит.


пикассо   (2009-03-16 20:01:00) [9]


> Palladin ©   (16.03.09 19:26) [12]

спасибо, попрробую


Palladin   (2009-03-16 19:26:00) [10]


> пикассо   (16.03.09 19:08) [10]

нотепады тоже предполагают
хотя если речь идет о читаемом тексте, то

Function MaybeUTF8(Const s:String):Boolean;
Begin
Result:=Pos(#208,s)<>0;
End;


выдаст очень сильноверновероятный результат :)


Медвежонок Пятачок   (2009-03-16 19:14:00) [11]

Так и определяет. На байты смотрит и определяет.
Больше-то смотреть не на что.


пикассо   (2009-03-16 19:08:00) [12]


> Palladin ©   (16.03.09 18:31) [8]

я одно большое ухо


> Медвежонок Пятачок ©   (16.03.09 18:32) [9]


> Много байтов $D0

что это?

А как какой-нибудь NotePad это определяет?


Медвежонок Пятачок   (2009-03-16 18:32:00) [13]

Много байтов $D0 - значит наверное может быть точно это наверное utf-8
:)


Palladin   (2009-03-16 18:31:00) [14]

да в общем то никак, но предположить можно :)


пикассо   (2009-03-16 18:24:00) [15]


> Медвежонок Пятачок ©   (16.03.09 18:19) [6]

мне нужна процедура IsTextUtf8()... или как ее сделать.


Медвежонок Пятачок   (2009-03-16 18:19:00) [16]

утф-8 это не юникод, а транспортное представление.
как base64, например.


пикассо   (2009-03-16 18:17:00) [17]


> Palladin ©   (16.03.09 18:05) [3]

ну я не знаю... если выполнить Utf8ToAnsi, то появляется читабельный текст...

> sniknik ©   (16.03.09 18:07) [4]

как быть-то? Строка может быть формата utf8 - надо переводить...


sniknik   (2009-03-16 18:07:00) [18]

насколько знаю utf8 это не совсем юникод... даже файлы могут быть как с BOM так и без него, т.е. это попросту соглашение типа "вот эту строку нужно интерпретировать так".  но если нет символов > #128 то строка автоматом будет = ansy/oem.


Palladin   (2009-03-16 18:05:00) [19]

ну значит она не является unicode :)


пикассо   (2009-03-16 18:02:00) [20]


> Palladin ©   (16.03.09 17:57) [1]

не желает(


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо