Nous avons une application qui utilisait le framework C++ zApp pour l'interface utilisateur (formulaires, polices, tout). Nous l'avons lentement converti pour utiliser le framework .net et avons récemment découvert que les caractères grecs ne s'affichent plus correctement.Le texte grec n'est pas affiché correctement
Dans une version de l'application, j'ai un formulaire C# .net et un formulaire zapp C++ qui affichent tous deux les mêmes données. Le projet est compilé avec MS Visual Studio 2005 et utilise .net 2.0. Dans le formulaire .net, le grec n'est pas affiché correctement. Je peux copier le texte à partir du formulaire .NET, le coller dans le formulaire zApp et il s'affichera correctement dans le formulaire zApp. Cela me dit que les données sont en cours de chargement et toutes les informations correctes sont présentes dans la chaîne.
J'ai essayé d'apporter des modifications à la police utilisée dans le code .net. Le code zApp crée une police à l'aide d'une structure LOGFONT pour le contrôle affichant le grec. J'ai pris les valeurs exactes qui étaient utilisées pour zApp, j'ai créé un LOGFONT avec ces valeurs et j'ai défini la police du formulaire .net en utilisant cette structure (this.Font = Font.FromLogFont ((object) lFont);). J'ai utilisé le même nom de facette, le jeu de caractères, etc. Tout dans la structure LOGFONT est mis en place. Le grec était encore mal montré. Je peux dire que la police que j'ai créée est utilisée parce que si je souligne, elle soulignera le texte et si je regarde les propriétés de la police du contrôle (this.Font) après l'avoir définie avec LOGFONT, elles sont comme je le ferais Attends-les à être. J'ai d'abord eu des problèmes avec une police qui n'était pas une police de type vrai, mais j'ai ensuite changé la police zApp en une police de type vrai et c'était toujours bien, donc j'ai utilisé ça pour mes tests (Microsoft Sans Serif). De plus, si je tape des caractères grecs à partir du clavier, ils s'affichent correctement dans le formulaire .net et le formulaire zApp. Cependant, les caractères entrés dans le formulaire .net et enregistrés dans la base de données s'afficheront comme des ordures dans le fichier. Les formulaires zApp sont différents des données enregistrées par le formulaire zApp. Encore une fois, si je copie le texte qui ressemble à la poubelle du formulaire. NET et le collez dans le formulaire zApp alors il affiche très bien (pas de perte de données).
Quelqu'un a-t-il des idées?
Etes-vous sûr que le texte Oracle n'est pas UTF-8? Je sais que les bits de poids fort sont utilisés pour définir s'il y a plus d'octets dans le caractère donné. Donc, en UTF-8, tous les caractères n'ont pas la même longueur - votre solution casserait pour les caractères latins normaux. –
Le texte est stocké dans un VARCHAR2 afin qu'il utilise le jeu de caractères WE8ISO8859P1. (AL16UTF16 est le paramètre NLS_NCHAR_CHARACTERSET.) – AAyres