|
|
|
Как работает Utf8ToString ?
|
|||
|---|---|---|---|
|
#18+
Добрый день. Есть следующая ситуация : функция Utf8ToString которой передается строка Спасибо Р·Р° ваше РїРёСЃСЊРјРѕ на выходе все нормально, но изначально без использования Utf8ToString, Length возвращает 43 символа, после Utf8ToString остается 24 символа Вопрос : где остальные символы? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2018, 21:47 |
|
||
|
Как работает Utf8ToString ?
|
|||
|---|---|---|---|
|
#18+
Pcrepair, Их изначально своровали у цыган, а сейчас вернули ) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2018, 22:03 |
|
||
|
Как работает Utf8ToString ?
|
|||
|---|---|---|---|
|
#18+
PcrepairВопрос : где остальные символы? Length(строка) возвращает количество элементов строки, а не символов. У AnsiString и Utf8String элемент - это байт, у UnicodeString (и WideString?) элемент - это слово (Word). Соответственно в вашем случае Length возвращает длину строки в байтах. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2018, 23:35 |
|
||
|
Как работает Utf8ToString ?
|
|||
|---|---|---|---|
|
#18+
alekcvpУ AnsiString и Utf8String элемент - это байт, у UnicodeString (и WideString?) элемент - это слово (Word). Если быть более дотошным, то у AnsiString элемент - это AnsiChar, у Utf8String - это байт ( = AnsiChar), а у UnicodeString - это Char (= Word). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2018, 23:37 |
|
||
|
Как работает Utf8ToString ?
|
|||
|---|---|---|---|
|
#18+
Почти вся правда про UTF-8 PS PcrepairLength возвращает 43 символа, после Utf8ToString остается 24 символа - это нормально. Для дальнейшей беседы рекомендую указывать версию Dephi и предупреждаю, что в юникодных Delphi число байт и число символов будут ощутимо различаться, а так же о том, что "юникоды бывают разные" (с) Кролик. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 08.05.2018, 23:38 |
|
||
|
Как работает Utf8ToString ?
|
|||
|---|---|---|---|
|
#18+
версия XE3 больше информации - есть строки с разной кодировкой, Utf8ToString позволяет восстановить нужную кодировку (Спасибо Р·Р° ваше РїРёСЃСЊРјРѕ = Спасибо за ваше письмо) - но нужно определять когда использовать функцию, так как отдельные строки не нуждаются в смене кодовой? страницы? там наоборот, если применить функцию выходят кракозябры тут возникает задача как определить, применять функцию или нет, пока вот так : Код: pascal 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. но это какой то мутный способ. не уверен что 100% -ный может есть еще способ определить, использовать Utf8ToString или нет? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2018, 08:17 |
|
||
|
Как работает Utf8ToString ?
|
|||
|---|---|---|---|
|
#18+
Pcrepair, Элементы UTF-8 имеют строго регламентированную маску и разнообразие бит. Кроме того, разумеется, каждый символ должен быть <= #$00ff Это не гарантированный вариант, но на практике даст очень высокую точность. А вообще лучше не смешивать ANSI и UTF-8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2018, 09:34 |
|
||
|
Как работает Utf8ToString ?
|
|||
|---|---|---|---|
|
#18+
Pcrepair, Кроме вышеприведённого совета ещё можно использовать статистический анализ текста, но стоит ли заморочек - вопрос. Как пример: если текст точно русский, то можно посчитать количество символов "Р" в строке - если превышен некий порог, то значит это UTF8. Кстати, для латинского текста UTF8 совпадает с Win1252 AFAIK. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 09.05.2018, 12:43 |
|
||
|
|

start [/forum/topic.php?fid=58&msg=39642216&tid=2040913]: |
0ms |
get settings: |
6ms |
get forum list: |
10ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
198ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
29ms |
get tp. blocked users: |
1ms |
| others: | 228ms |
| total: | 487ms |

| 0 / 0 |
