Utf 8 TiXmlDocument::非拉丁路径名的加载文件
我使用tinyXml将配置文件存储在FOLDERID\u RoamingAppData下,或者换句话说,存储在C:\Users\USERNAME\AppData\Roaming下。 我使用以下顺序(简化):Utf 8 TiXmlDocument::非拉丁路径名的加载文件,utf-8,non-ascii-characters,tinyxml,Utf 8,Non Ascii Characters,Tinyxml,我使用tinyXml将配置文件存储在FOLDERID\u RoamingAppData下,或者换句话说,存储在C:\Users\USERNAME\AppData\Roaming下。 我使用以下顺序(简化): SHGetKnownFolderPath(FOLDERID\u RoamingAppData,0,NULL,&path)以获取路径 将路径编码为UTF8 调用m_doc.LoadFile(path)//m_doc是TiXmlDocument对象 调用m_doc.Savefile()//如果用
我想知道当文件名包含非拉丁语(如希伯来语)字符时,如何加载文件/保存文件。由于Windows API不接受UTF8编码,因此没有可移植的方法将Windows文件名编码为基于
char
的变量(C字符串或std::string
s)
幸运的是,TinyXml提供了另一种形式的加载文件
,接受文件*
作为参数。您可以使用Windows\u wfopen
来获得这样的句柄:下面是一个代码片段:
SHGetKnownFolderPath(FOLDERID_RoamingAppData, 0, NULL, &path);
FILE* xmlFile = _wfopen(path, L"r+");
m_doc.LoadFile(xmlFile);
相应的函数SaveFile
的工作方式相同–在这种情况下,使用L“w”
作为\wfopen
调用的第二个参数来覆盖文件的早期版本