В Delphi XE имеется разрыв обратной совместимости с функцией AnsiToUTF8()
, фактически в вызываемой ею функции Utf8Encode()
.
В Delphi XE возвращается строка RawByteString
.Таким образом, вам придется принудительно установить тип результата в UTF8String
.Например: UTF8String(ansitoUTF8(...)
Но я думаю, что это, возможно, не ваша проблема.
В вашем коде:
adoquery1.sql.text:='insert into table (data1,data2) values ('+#39+ansitoUTF8(edit1.text)+#39+','+#39+ansitoUTF8(edit2.text)+#39+')';
Выражение sql.text
представляет собой UnicodeString
, так что у вас будет явное преобразование, сделанное компилятором Delphi XE в вашем выражении конкатенации.
Работает ли следующая строка?
adoquery1.sql.text:='insert into table (data1,data2) values ('+#39+edit1.text+#39+','+#39+edit2.text+#39+')';
Она должна работать под XE, и преобразованиев UTF8 должен быть сделан VCL из raw UnicodeString
.