windows unicode resources atl

windows - ¿Derecha sola apóstrofe vs.



unicode resources (2)

Comilla simple derecha (U + 2019) vs. Apostrophe (U + 0027)

¿Cuál es la diferencia entre estos dos personajes?

Me encontré con este problema donde uso CAtlString para cargar una cadena de un archivo de recursos, y en algunas instalaciones de Windows, la LoadString falla al intentar cargar una cadena que contiene U + 2019, pero funciona en otras instalaciones de Windows. El carácter U + 2019 aparece en las cadenas de mi archivo de recursos que copié de Word, y U + 0027 aparece en las agujas que codifiqué a mano. ¿Por qué LoadString (a veces) se atraganta con esto?


¿Cuál es la diferencia entre estos dos personajes?

¡Discutible!

Por los nombres, uno podría imaginar que la raya ‹''› es solo para usar como comillas, y que la recta ‹''› es solo para usar como un apóstrofe real, un indicador de las letras omitidas.

Sin embargo, la práctica tradicional de tipografía en inglés consiste siempre en utilizar un rizo ‹''› para representar un apóstrofe. Personalmente, y puedo estar solo aquí, no me gusta esto. Se puede hacer para una lectura más ambigua:

"Dijo: ''Es fish'' n ''chips'' ..."

con las apóstrofes rectas es (marginalmente) más claro donde termina la cita:

"Dijo: ''Es fish'' n ''chips'' ..."

y el hecho de que el apóstrofe sea "recto" tiene más sentido para mí porque su propósito de indicar letras omitidas no tiene una direccionalidad inherente, mientras que las comillas son claramente asimétricas en su propósito.

En el ASCII tradicional, por supuesto, no hay citas inteligentes, por lo que el apóstrofe siempre se usa para ...

en algunas instalaciones de Windows, el LoadString falla cuando se intenta cargar una cadena que contiene U + 2019, pero funciona en algunas otras instalaciones de Windows.

Aquí te encuentras con el horror de la página de códigos ''ANSI''. Esta es una codificación de caracteres predeterminada que es diferente entre las diferentes configuraciones regionales de Windows. Entonces, en una máquina en la región occidental, obtienes resultados diferentes cuando lees un recurso cuando lo lees en un Windows japonés.

Es muy desafortunado que Windows tenga diferentes páginas de códigos predeterminadas en lugar de usar una única codificación global como UTF-8, pero es demasiado tarde para corregirlo ahora. Si compila toda la aplicación como una aplicación Unicode (por lo que utilizará LoadStringW lugar de LoadStringA ), podrá manejar caracteres que no sean ASCII, como las citas inteligentes, mucho mejor.

Si no puedes moverte a una aplicación Unicode, estás un poco atascado. No podrá manejar caracteres que no sean ASCII como las citas inteligentes a nivel mundial, por lo tanto, quédese con caracteres ASCII como el apóstrofe recto solo.

El carácter U + 2019 aparece en cadenas en mi archivo de recursos que copié de Word

Sí, Word tiene una característica molesta de Autocorrección que reemplaza todos los apóstrofes que escribe con comillas inteligentes. Esto es especialmente indeseable cuando se trata de un código, donde ‹''› romperá el programa; pero también es incorrecto incluso para el inglés antiguo, ya que no es posible adivinar correctamente la dirección deseada de la cita. (Obtendrá uno de los apóstrofes en "fish ''n'' chips" al revés, por ejemplo).

Sugiero desactivar la función de cambio de citas automáticas. Si quieres las citas inteligentes, es mejor escribirlas deliberadamente. Desafortunadamente, son inconvenientes de escribir en la mayoría de las distribuciones de teclado, que a menudo requieren secuencias oscuras de Alt + numpad. Personalmente, uso este para soltarlos en las teclas Alt + [].


Históricamente, las comillas simples y las comillas dobles vienen en pares, izquierda (abierta) y derecha (cerrada).

Durante muchos años los juegos de caracteres de las computadoras fueron limitados, teniendo una forma única de cada uno.

Ahora, con la llegada de Unicode, los formularios completos están disponibles, pero el soporte para ellos es todavía limitado. Los lenguajes de programación todavía usan los formularios simples, y los formularios completos aún pueden causar problemas.