C++编码(特殊字符 Ø,é...)

C++ Encoding (special character Ø,é...)

本文关键字:特殊字符 编码 C++      更新时间:2023-10-16

我的工作c++/Windows/minGw

我从文件。xml中得到一个带有特殊字符的字符串文件xml上的提示是"Quimby_éé_ØØ R90 GP_NomPoints.txt"。对于奇怪字符

,结果是不同的。

My file.xml sounds ok:

<?xml version="1.0" encoding="UTF-8"?>
测试:

当我从文件。txt中得到一个带有特殊字符的字符串时,它不起作用当我将字符串写入。txt文件时,它工作得很好。

那么ide控制台可能有问题。

我代码:

void parser_fichier_xml(string fich,string &ActPoints,string &NomPoints)
{
//string ActPoints;
//string NomPoints;
TiXmlDocument doc(fich.c_str());
if(doc.LoadFile(TIXML_ENCODING_UTF8))
{
TiXmlHandle hdl(&doc);                                          
TiXmlElement *elem = hdl.FirstChildElement("GeometryData").FirstChildElement("Element").Element();   //Création de elem (arbre DOM constituant noeud --enfant)

if(!elem)
{
cout<<"le noeud à atteindre n'existe pas"<<endl;
//return 1;
}                                                     //boucle pour vérifier que l'élément ait bien un enfant
 /* ********* Recuperer chemin nompoint actpoint dans balise XML *********** */

 ActPoints = elem->Attribute("ActPoints");
 NomPoints = elem->Attribute("NomPoints");
 /* *****test dans fichier de sorti ***** */
string const nomFichier("Z:/Production/Methodes/InfoTec/Developpement/Zeiss_PCM/toCALYPSO/test.txt");
ofstream fichier(nomFichier.c_str());
    if(fichier)
    {
        fichier << NomPoints<< endl;

            fichier.close();
    }
    else
            cerr << "Impossible d'ouvrir le fichier test.txt !" << endl;
        /* ************************************************** */

    debug_string("Chemin ActPoints:  ",ActPoints,"Chemin   NomPoints:  ",NomPoints); //affiche dans console
 }
else
{
cerr << "Erreur d'ouverture du fichier .XML" << endl;
}

}

作为回答,我不喜欢一个替换特殊字符的函数,而是一些改变所有

的函数

如果有人可以帮助我

谢谢你

windows控制台几乎不支持Unicode,绝对不支持UTF-8, MinGW的std::cout也帮不了你。对不起。

谢谢你的回答,

的评论。下次我会尽量减少我的声音。

我知道什么是UFT-8,ASCII是不够的(没有Ø, …)UNICODE是理论上的

为了实用,我有两个选择ISO 8859或UTF-8和UTF-8更完整(日文等)

测试:

我尝试了这个特殊字符" ",结果是" "

显示(cout或printf)是不重要的,因为我得到的值(结果)像路径。

我将尝试使用ISO 8859,但即使有包含"éé_ØØ"的文件文本,控制台也不会写入相同的"éé_ØØ"

对不起,我不能发送结果的图片(这个网站问10个声誉)