2008-09-19 16 views
6

Mi aplicación maneja correctamente diferentes tipos de conjuntos de caracteres, pero solo internamente: cuando se trata de mostrar texto en etiquetas WinForms estándar y cuadros de texto, parece tener problemas con caracteres chinos.Cómo representar caracteres Unicode en la fuente correcta? (C#/WinForms)

El problema parece ser la fuente utilizada (Tahoma), porque al copiar & pegar el texto, o verlo en el depurador, se muestra correctamente. Además, cuando configuré MS Mincho como la fuente que se utilizará, los caracteres de la pantalla se ven bien.

Por supuesto, no quiero usar MS Mincho en toda la aplicación. ¿Tengo que cambiar la fuente dependiendo de los caracteres que se muestran, o hay una mejor manera que me he perdido?

+3

Asegúrese de no utilizar MS Mincho para chino. Esa es una fuente japonesa. Debe usar SimHei o SimSun para chino simplificado y MingLiU para chino tradicional. Son diferentes, y un nativo detectará la diferencia al instante. Y bzlm tiene razón, hay algo mal con sus formularios, deberían funcionar de inmediato, incluso con Tahoma debido a la vinculación de fuentes realizada por el sistema. –

Respuesta

4

UniScribe, que se introdujo en Windows 2000, se supone que maneja esto de forma transparente, lo que significa que usará automáticamente una fuente diferente (como Mincho) para caracteres que no están presentes en la fuente que ha seleccionado. Es por eso que parece correcto en el depurador, aunque la fuente utilizada en el depurador no contenga caracteres chinos. Tal vez esté haciendo algo que deshabilita UniScribe, o es problemático de alguna otra manera. Quizás si pudieras pegar algún código, sería más fácil identificar el problema.

+0

Parece que este es el tipo de biblioteca que he estado buscando. –

+0

@Stefan Si utiliza los mecanismos de desarrollo estándar (es decir, Visual Studio), UniScribe ya debería estar allí y hacer el trabajo por usted (vea el comentario de Mihai sobre la pregunta). – bzlm

0

Todas las fuentes no tienen datos para todos los glifos que se pueden expresar en unicode. Deberá ubicar una fuente adecuada que tenga el subconjunto que desee.

editar: Para aclarar, hay fuentes que cubren el rango completo de Unicode, pero la que está utilizando ahora no es una de ellas.

Cuestiones relacionadas