|
|
|
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
|
|||
|---|---|---|---|
|
#18+
ДокВолшебной функции нету, но есть модуль LConvEncoding с волшебной функцией GuessEncoding :) А ты посмотри ее код xD какая там магия, тупо проверка БОМ-ов, прогон по <#128, преобразование utf8, а в финале - ТА-ДАММ - Result:=GetDefaultTextEncoding; // use system encoding ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2019, 10:12 |
|
||
|
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
|
|||
|---|---|---|---|
|
#18+
Василий 2финале - ТА-ДАММ - Result:=GetDefaultTextEncoding; // use system encoding "Так тебе шашечки или ехать?" © Ты об чем споришь сейчас? Или приведенный мною способ проблемы ТС не решает? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2019, 10:22 |
|
||
|
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
|
|||
|---|---|---|---|
|
#18+
Проблему ТС решает LoadFromFile('...', TEncoding.UTF8), ну или чуть более универсально - try u8s := Utf8String(Buffer) except {это явно не UTF8} end (лень проверять, выкинет ли неявный каст эксепшен, идея, надеюсь, понятна). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2019, 10:35 |
|
||
|
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
|
|||
|---|---|---|---|
|
#18+
Василий 2Проблему ТС решает LoadFromFile('...', TEncoding.UTF8) Возможно. Кодировки для меня - явление новое, с учётом специфики лазаря ещё могут быть ещё и отличия от дельфей. Будет время, поэкспериментирую для личного опыта. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2019, 11:13 |
|
||
|
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
|
|||
|---|---|---|---|
|
#18+
Док Волшебной функции нету, но есть модуль LConvEncoding с волшебной функцией GuessEncoding :) Док, есть ещё GetBufferEncoding:This example determines the encoding of a source file and then writes the file in any encoding chosen. http://docwiki.embarcadero.com/CodeExamples/Tokyo/en/TEncoding_(Delphi) Василий 2Проблему ТС решает LoadFromFile('...', TEncoding.UTF8), ну или чуть более универсально - try u8s := Utf8String(Buffer) except {это явно не UTF8} end Василий 2, пробовал и такую перегруженную процедуру LoadFromFile('...', TEncoding.UTF8), но это недостаточно, с этим или без него результат один, а Utf8String(Buffer) пока не использовал. Главное что причину прояснил и сейчас файл сохраняю как BOM (utf8, unicode, unicode big endian) и проблема снята- китайские иероглифы исчезли и в бинарном блобе текст правильно сохраняется из rtf-файла/memo/richedit и загружается обратно. На этом этапе мне и это достаточно. Если кому-то интересно очень помогли эти статьи: http://docwiki.embarcadero.com/RADStudio/Berlin/en/Unicode_in_RAD_Studio#Summary_of_What_Has_Not_Changed http://docwiki.embarcadero.com/RADStudio/Berlin/en/UTF-8_Conversion_Routines ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2019, 15:21 |
|
||
|
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
|
|||
|---|---|---|---|
|
#18+
Василий 2 Код: sql 1. - корректный UTF-8. И что с ним дальше делать? Можно определить некоторые случаи, когда текст НЕ в UTF-8. Но это лишь подмножество из возможного количества вариантов что делать? обрабатывать. Да, это лишь подмножества. Корректные тексты вообще - лишь подмножества из всех возможных сочетаний байтов. Да, кстати, если ещё не сталкивались. У великолепнейшего класса TEncoding есть ещё одна фишка - он НЕ возвращает ошибок. Т.е. при скармливании тому же TEncoding.UTF8 некорректного текста - он вернёт не ошибку, а пустую строку. Особенно это было весело, когда нужно было древний проект (Delphi 5, данные хранились в БД в виде DFM, названия этих потомков TComponent были в windows-1251 (формально так нельзя, но никто не проверял и не запрещал)) перевести на новые юникодные Delphi (где это формально можно, но в UTF-8). Пришлось создавать собственный "двойной" TEncoding и патчить в памяти то ли TComponent, то ли TReader, то ли оба ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2019, 15:48 |
|
||
|
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
|
|||
|---|---|---|---|
|
#18+
Докесть модуль LConvEncoding с волшебной функцией GuessEncoding есть с древнейших времён TCode от Alex Boiko но она работает только с русским языком и совсем не работает с остальными опять, блин, только лишь подмножество..... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2019, 15:49 |
|
||
|
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
|
|||
|---|---|---|---|
|
#18+
Arioch, т.е., например, в Берлин Хеми она не сработает, если р и X латинские? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2019, 16:20 |
|
||
|
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
|
|||
|---|---|---|---|
|
#18+
Gator, там всё остальное русское :-) попробуй. вообще, статистика накапливается на больших массивах слов, два слова это всё равно голодный паёк для статистики ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2019, 16:42 |
|
||
|
Кракозябры и иероглифы при чтении и записи из текстового файла или Memo в blob и обратно
|
|||
|---|---|---|---|
|
#18+
Arioch, Тут не слова, а тупо фиксированный справочник фирм, и туева хуча тупых баб, которые руками отправляли названия ручками. Сохласен, пример неудачен. Чаще попадались лати латинские названия с кир.буквами. ________________ Мне насрать, давно, У меня русский редко попадает, чего не скажешь о датчах ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.02.2019, 19:02 |
|
||
|
|

start [/forum/topic.php?fid=58&gotonew=1&tid=2039795]: |
0ms |
get settings: |
6ms |
get forum list: |
13ms |
check forum access: |
3ms |
check topic access: |
3ms |
track hit: |
158ms |
get topic data: |
8ms |
get first new msg: |
6ms |
get forum data: |
2ms |
get page messages: |
32ms |
get tp. blocked users: |
1ms |
| others: | 204ms |
| total: | 436ms |

| 0 / 0 |
