Проблема классифицируется в два этапа:Unicode Woes! Ms-Access 97 миграции в Ms-Access 2007
Проблема Шаг 1. Access 97 дб, содержащий XML-строки, которые закодированы в UTF-8.
Проблема сводится к следующему: база данных Access 97 содержит строки XML, которые кодируются в UTF-8. Поэтому я создал инструмент патча для отдельного преобразования для строк XML из UTF-8 в Unicode. Чтобы скрыть строку UTF8 до Unicode, я использовал функцию MultiByteToWideChar (CP_UTF8, 0, PChar (OriginalName), -1, @newName, Size);. (Где newName - это массив, объявленный как «newName: Array [0..2048] of WideChar;»).
Эта функция работает хорошо в большинстве случаев, я проверил ее с помощью Spainsh, Arabic, characters. но я работаю над греческими и китайскими персонажами, которые задыхаются.
Для некоторых греческих символов, как «Я • Ï ... i³. ISI ± Ii ± βιά» (, хранящиеся в Access-97), в результате новой строки содержит нулевой Charaters между ними, и когда она хранится в широкоформатные символы становятся обрезанными.
Для некоторых Chineese символов, такие как «?  ¢ »? Âμ? "(, хранящиеся в Access-97), то результат будет совершенно абсурдно, как"? ¢ »? Ц?».
Проблема Шаг 2. Access 97 дб текстовых строки, приложения GUI принимает ввод Юникода и сохраняются в Access-97
Сначала я проверил с арабским и испанско символами, кажется, то, что никаких явных символы не кодирующий требуется , Но опять же проблема связана с греческими и китайскими персонажами.
Я пробовал вышеупомянутую функцию для преобразования текста (правильно ли это?), Результат снова был опрошен. Символы Spainsh, которые согласны с преобразованием, получают символ Юникода, потерянный или преобразованный в обычные алфавиты Ascii.
Греческие и Chineese символы показывает подобное поведение как mentined в шаге 1.
Пожалуйста, руководство меня. Правильно ли я подхожу? Есть ли другой способ? Ну прямо сейчас я смущен и полон Вопросов :)
Какая версия Delphi? Начиная с Delphi 2009, поддержка Unicode сильно изменилась. – mjn
Его Delphi 2006 – Nains
Невозможно «конвертировать из UTF-8 в Unicode», Unicode не кодирует символы :) Для преобразования в Access 2007 вам нужно знать, какая кодировка charcter используется для данных таблиц базы данных, например UTF -16 (что не то же самое, что и WideChar) – mjn