| imho.ws |
![]() |
|
|
|
# 1 |
|
Newbie
Регистрация: 16.06.2005
Сообщения: 38
![]() |
xml
Имеется огромный файл file.xml. Я не очень хорошо знаю эту технологию. Допустим при открытии файла есть строка
<name>на складе</name> при открытии в блокноте, строка выглядит так, как показано выше. Потом я копирую файл средствами Delphi (открытие file.xml, занесение всех строк в массив, запись массива в file.txt). В новом файле строка выглядит как <name>РЅР° складе</name> Т.е. русский текст не отображается! Как это исправить??? |
|
|
|
|
# 10 |
|
Junior Member
Регистрация: 19.04.2002
Адрес: Дом
Пол: Male
Сообщения: 187
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Я сам-то на C++ пишу и Delphi для меня это что-то далекое, далекое...
Потому как это средствами VCL не скажу. Но путей несколько на самом деле. 1. WideCharToMultiByte - из юникода в простой char MultiByteToWideChar - Обратно в Unicode Это функции WinAPI и их описание найти я думаю не сложно. 2. Можно просто поискать таблицу соотвествия Unicode, как я понял UTF8 кодировке windows-1251 и используюя эту таблицу написать собственную функцию перекодировки. Примерно в таком ключе. Надеюсь поможет.
__________________
Дураки не динозавры - они не вымрут... |
|
|
|
|
# 12 |
|
Member
Регистрация: 20.05.2004
Сообщения: 385
![]() ![]() ![]() ![]() ![]() |
Я читаю в VB6 методами (не знаю, как в русских терминах) file mapping/memory mapping kernel.dll API. Копирую, допустим, 100 Kb, читаю, затем следующие 100 Kb (pointer к 101-му, 201-му и т.д. килобайту, и, наконец, к хвосту). Если интересует, могу выложить или выслать
Уточнение: открывается не сам файл, а читается кусок скоприваннной памяти, как текстовая переменная Последний раз редактировалось UriF; 24.08.2005 в 21:35. |
|
|
|
|
# 13 |
|
Member
Регистрация: 18.08.2004
Пол: Male
Сообщения: 235
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
_http://www.megalib.com/books/923/1315.htm
Модуль uCodePageConverter для перекодировки и пример использования. Никаких таблиц преобразования, все средствами Windows. Добавь в модуль строку (в объявлении констант) CODEPAGE_UTF_8: tagCODEPAGE = 65001; Затем в программе строка инициализации: Conv.Initialize(CODEPAGE_UTF_8, CODEPAGE_Windows_31_Cyrillic, MLCONVCHARF_ENTITIZE); а сама перекодировка: Conv.DoConversion(Source, @SourceSize, Dest, @DestSize); остальное как в примере. |
|
|
|
|
# 15 |
|
Junior Member
Регистрация: 19.04.2002
Адрес: Дом
Пол: Male
Сообщения: 187
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
YaHooka
Слишком уж он MS-зависимый посмотрел бы я на тебя с ним по Linux или MAcOS. К тому же человек видимо уже разобрался, что к чему, раз не пишет больше.
__________________
Дураки не динозавры - они не вымрут... |
|
|