2014-01-02 6 views
0
exzample code: 
var 
    str1 : String; 
    str2 : AnsiString; 
    .... 
    str2 := ....; 
    str1 := String(str2); 

я преобразовал такие, как указано выше, но это не work.I обнаружили, что некоторые данные потеряны в str1.is там безопасный способ преобразовать AnsiString в UnicodeString?Как преобразовать AnsiString в UnicodeString в Delphi xe4

+0

Это правильный способ, который работает ... Вы должны быть более конкретными в своем примере. Каков был ваш вклад и что вы получили как результат (или, как вы считаете, вы проиграли). – TLama

+0

Существует также вероятность того, что потеря уже имеет место при назначении 'str2'. –

+0

Предполагаемый способ, который работает без выдачи предупреждений компилятора, - это метод EXPLICIT: 'str1: = UnicodeString (str2);' Вам действительно нужно рассказать больше, почему вы считаете, что некоторые данные были потеряны. 'Writeln (длина (str1), длина (str2): 20); если длина (str1) = length (str2), то для I: от 1 до длины (str1) do writeln (str1 [i] = str2 [i]); 'и посмотреть, есть ли сообщения False –

ответ

2

Ваш код уже правилен. Он будет конвертировать из ANSI в UTF-16 без потери информации.

Таким образом, я заключаю, что информация теряется при назначении переменной AnsiString. Другими словами, ошибка в вашем коде содержится в части кода .....

Ошибка в том, что данные и кодовая страница вашей переменной AnsiString не совпадают.

+1

Это, я считаю, ответ на вопрос что вы спросили. Однако вы, вероятно, не будете удовлетворены этим. Возможно, вы задали неправильный вопрос. Я подозреваю, что вы должны были представить SSCCE и спросили, почему преобразование строк ведет себя так, как это было неожиданно для вас. Такой вопрос будет легко ответить и, несомненно, решит вашу настоящую проблему. Это будет совсем другой вопрос. –

+0

Я прочитал str2 из zip-файла, так что это Garbled – taoxl

+1

Ah. *Это проблема. Прекратите чтение двоичных данных в текстовый тип данных. И * определенно * не ожидайте, что что-то разумное произойдет при преобразовании нескольких кодировок символов. Используйте zip-библиотеку для чтения zip-файла. Если вы сами должны загрузить данные, используйте двоично-безопасный тип данных, например TBytes. –