Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Начинающим";
Текущий архив: 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
2-1236562614
GrieVeR-13
2009-03-09 04:36
2009.04.26
Как через API функции отследить вращение колеса мыши?


6-1199630362
WebSQLNeederr
2008-01-06 17:39
2009.04.26
отключить в ТВебБроузер звук щелчка при переходе по линку


2-1237223111
MagRam
2009-03-16 20:05
2009.04.26
сертификаты и ключи шифрования


3-1219390970
LongUSB
2008-08-22 11:42
2009.04.26
Как открыть файл БД с нестандартным расширением?


3-1220124276
avram
2008-08-30 23:24
2009.04.26
Организавать в трехзвенке ещё один сервер





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский