![]() |
Beta: Usar Unicode UTF-8 para soporte de lenguaje mundial
Hola!
Mi aplicación Delphi (10.4 o superior) corre exclusivamente para idioma español, en América Latina, y encuentra problemas de funcionamiento para interpretar strings cuando el entorno Windows tiene definida la opción "Beta: Usar Unicode UTF-8 para soporte de lenguaje mundial". ¿Cómo puedo hacer para que dicha opción no afecte a mi aplicación?. Muchas gracias! |
El problema que mencionas ocurre porque cuando la opción "Beta: Usar Unicode UTF-8 para soporte de lenguaje mundial" está activada en Windows, el sistema cambia el codepage predeterminado a UTF-8. Esto afecta cómo Delphi maneja cadenas en componentes VCL y en la interacción con APIs de Windows, especialmente si la aplicación asume que el codepage es ANSI.
Soluciones posibles: 1. Forzar el uso del Codepage ANSI en la aplicación Puedes establecer explícitamente el codepage ANSI en el inicio de la aplicación. Para ello, usa:
Esto obliga a que la aplicación utilice el codepage estándar para español latinoamericano. 2. Evitar dependencias de ANSI y trabajar en Unicode nativo Si tu código aún usa AnsiString o String en versiones antiguas, conviene hacer una migración a UnicodeString (que es el String predeterminado en Delphi 10.4). Evita conversiones innecesarias entre Unicode y ANSI. 3. Usar TEncoding para conversiones de texto Si necesitas manipular archivos o comunicación con la base de datos, usa TEncoding para asegurarte de que las cadenas se procesen correctamente:
Si interactúas con bases de datos, asegúrate de que estén configuradas correctamente para Unicode o usa conversiones adecuadas. 4. Modificar el manifest de la aplicación Si la opción de Windows está activada y afecta la compatibilidad de tu aplicación, puedes evitar que Windows la fuerce editando el manifest de la aplicación. Abre el archivo .dproj de tu proyecto. Busca la sección <dpiAware> y añade esta línea dentro de <application>: Código:
<application xmlns="urn:schemas-microsoft-com:asm.v3"> Recomendación Si no puedes controlar la configuración de Windows en todas las máquinas, la mejor opción es hacer que tu aplicación trabaje completamente en Unicode (String = UnicodeString), evitar AnsiString, y usar TEncoding para conversiones cuando sea necesario. |
La franja horaria es GMT +2. Ahora son las 11:26:28. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi