¿Por qué Delphi IBX TWideMemoField convierte el orden de bytes en la cadena UTF8 y cómo evitarlo?
Estoy usando Delphi 2009 con IBX en la base de datos Firebird 3 (no tengo opción de elegir otras tecnologías, tengo que adaptarme a la situación). Tengo las siguientes definiciones:
l campo @Firebird BLOB se define como:
BLOB SUB_TYPE 0 SEGMENT SIZE 80
TWideMemoField se define como:
object MainQryNOTES: TWideMemoField
FieldName = 'NOTES'
Origin = 'INVOICES.NOTES'
ProviderFlags = [pfInUpdate]
BlobType = ftWideMemo
end
La cadena de prueba es "Цель по инфляции,%" y en ella se puede leer desde el campo BLOB en el software IBExpert como:
26 04 35 04 3B 04 4C 04 20 00 3F 04 3E 04 20 00
38 04 3D 04 44 04 3B 04 4F 04 46 04 38 04 38 04
2C 00 20 00 25 00
Lo extraño es que Delphi invierte el orden de bytes, p. el carácter cirílico Ц tiene una representación HEX UTF8 como 04 26, pero se almacena en la base de datos como 26 04 y la situación similar es exactamente con los otros caracteres también (se puede verificar esto con la ayuda de tablashttps: //www.w3schools.com/charsets/ref_utf_basic_latin.as yhttps: //www.w3schools.com/charsets/ref_utf_cyrillic.as). En mi caso, solo tengo caracteres de 2 bytes, pero supongo que la situación similar será con caracteres UTF8 de 3 y 4 bytes también.
Entonces, ¿cómo puedo configurar TWideMemoField para pedir que no se convierta el orden de bytes de las cadenas UTF8?