Obtenir un programme construit Dev-C ++ pour générer des caractères UNICODE sur la ligne de commande Windows

Si vous pouviez répondre à mes questions, ce serait génial.

Voici le scoop: j’enseigne une introduction à la classe de programmation en Thaïlande pour les 11e année. Cela va très bien jusqu’à présent, leur niveau d’anglais est suffisamment élevé pour que je puisse enseigner en anglais et leur demander d’écrire des programmes en anglais, et tout va bien et tout à fait dandy.

Cependant, en tant que locuteurs d’une langue avec des caractères non latins, j’estime qu’ils devraient au moins apprendre ce qu’est UNICODE. Je ne vais pas les tester ni les expliquer avec des détails d’implémentation, mais je veux leur montrer un exemple de programme UNICODE pouvant faire des E / S avec des caractères thaïlandais.

Je suis soumis aux contraintes suivantes, dont aucune ne peut être modifiée (du moins pour ce semestre):

  • Le programme doit fonctionner sous Windows 7
  • Le programme doit être en C (pas C ++)
  • Nous devons utiliser Dev-C ++ (v. 4.9.9.3) comme notre IDE (je vais essayer de convaincre les administrateurs de changer pour le semestre prochain, mais ils ne voudront peut-être pas le faire)
  • Le programme devrait sortir dans la ligne de commande (j’aimerais qu’il ressemble aux programmes que nous avons écrits jusqu’à présent)
  • Je veux qu’il soit facile à configurer et à exécuter, bien que je ne sois pas opposé à l’inclusion d’un fichier de traitement par lots pour effectuer certains travaux de configuration pour les enfants.

Voici à quel point je suis, et les questions que j’ai:

  • Dans le Panneau de configuration> Régions> Administratif> Langue pour les programmes non UNICODE est définie sur Thaï.
  • J’ai utilisé “chcp 874” pour définir la page de codes thaï dans la ligne de commande, mais les caractères du clavier apparaissent sous forme de caractères parasites. Est-ce que c’est peut-être parce que les correspondances de clavier sont fausses ou est-ce que je dois changer quelque chose?
  • J’ai écrit un programme avec la ligne: printf (“\ u0E01 \ n”); qui imprime ก, la première lettre de l’alphabet thaï. Est-ce la bonne syntaxe?
  • J’ai reçu un compilateur m’avertissant que “Les caractères universels sont uniquement pris en charge en C ++ et C99”. Dev-C ++ ne comstack-t-il pas en C99? Est-il possible d’obtenir un compilateur C99?
  • J’ai couru le code et ai eu des caractères de déchets. J’imagine que cela pourrait être dû au compilateur, à la ligne de commande ou à un certain nombre d’autres choses.

J’aimerais terminer ce cours avec un programme qui génère outputs, l’équivalent thaïlandais de “Hello World!” J’ai fait des tonnes de recherches sur Google, mais chaque réponse que j’ai trouvée ne fonctionnait pas dans ce cas particulier ou impliquait un IDE différent.

Ok, voici mon aide. Je n’utilise pas Dev-C ++ comme IDE, je ne peux donc pas vous aider avec des choses spécifiques à l’IDE, mais ce qui suit est standard pour la plupart des compilateurs C / C ++:

wprintf est l’implémentation printf pour les caractères larges (unicode).

Lorsque vous utilisez des caractères larges, vous utiliserez wchar_t à la place de char pour définir des chaînes.

alors tu pourrais faire quelque chose comme ça

 #include  int main(int argc, char** argv) { wchar_t* str = L"สวัสดีโลก"; wprintf(L"%s", str); system("pause"); return 0; } 

wprintf est probablement ce que vous recherchez.

Vous pouvez trouver d’autres fonctions pour imprimer et manipuler des chaînes larges en wchar.h fichier d’en-tête wchar.h .

Reference: wprintf – Référence C ++

L’utilisation de L avant les citations signifie que vous avez l’intention de définir une chaîne large. (unicode)

J’espère que cela pourra aider,

-Dave

Je n’ai jamais utilisé IDE DEV-C ++ 🙂 Cependant, après avoir lu un peu dessus, je vois que la version 4.9.9.3 de dev-c ++ utilise le portage gcc-3.5.4. Qui a le statut de support de caractère universel de “Terminé”, voir http://gcc.gnu.org/gcc-3.4/c99status.html pour plus de détails. Vous devez modifier la configuration de l’EDI de sorte que le compilateur utilise -std = c99 dans le cadre des indicateurs du compilateur.

Espérons que cela fera l’affaire.

Je vais essayer de le modifier sur mon propre système et de voir jusqu’où nous pouvons aller. Mettra à jour la réponse si je trouve d’autres indices 🙂

Si vous devez modifier la page de code dans un programme C de la console, vous pouvez append l’en-tête et le system("CHCP 874"); ligne system("CHCP 874"); au début du programme.

Si vous avez besoin d’un compilateur gratuit conforme à C99 sous Windows, vous pouvez essayer Pelles C :

http://www.christian-heffner.de/index.php?page=download&lang=en

Il est conforme à tous avec C99.

Vous devez utiliser des constantes de chaîne large, qui ont la syntaxe suivante:

 L"Wide ssortingng\n" 

Au lieu de printf (), vous devez utiliser wprintf (), etc.

http://pubs.opengroup.org/onlinepubs/7908799/xsh/wchar.h.html