Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/136.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 如何在Windows';wchar\u t和GCC/Linux one?_C++_Linux_Utf_Wchar T - Fatal编程技术网

C++ 如何在Windows';wchar\u t和GCC/Linux one?

C++ 如何在Windows';wchar\u t和GCC/Linux one?,c++,linux,utf,wchar-t,C++,Linux,Utf,Wchar T,假设我有以下Windows wchar\t字符串: L"\x4f60\x597d" 及 并希望将其转换为GCC/Linux wchar_t格式,即UTF-32 AFAIK格式(不一定以编程方式;这将是一次性的)。我该怎么做?(一般性的解释会很好,但基于这个具体案例的例子也会很有帮助) 请不要告诉我字符转换网站。我想从L“x(某物)”形式转换而不是“结束字符”形式。 < P>将从UTF-16(Visual C++ +代码> WCARYTT 表格)转换为UTF-8,然后可能从UTF-8到UCS-4

假设我有以下Windows wchar\t字符串:

L"\x4f60\x597d"

并希望将其转换为GCC/Linux wchar_t格式,即UTF-32 AFAIK格式(不一定以编程方式;这将是一次性的)。我该怎么做?(一般性的解释会很好,但基于这个具体案例的例子也会很有帮助)


请不要告诉我字符转换网站。我想从L“x(某物)”形式转换而不是“结束字符”形式。

< P>将从UTF-16(Visual C++ +代码> WCARYTT 表格)转换为UTF-8,然后可能从UTF-8到UCS-4(GCC <代码> WCARYTT < /COD>表格),是一个可接受的答案?< /P>
如果是这样,那么在Windows中,您可以使用
WideCharToMultiByte
函数(对于
CodePage
参数,使用
CP\u UTF8
)进行转换的第一部分。然后,您可以将生成的UTF-8字符串直接粘贴到程序中,或者进一步转换它们。是一条显示一个人是如何做到这一点的信息;您也可以编写自己的代码或手动执行(可以找到官方规范,其中有一节介绍如何将UTF-8转换为UCS-4)。可能有一种更简单的方法,我还不太熟悉Linux中的转换内容。

您只需要担心字符。当零填充时,其他所有字符都应该完全相同地从UTF-16映射到UCS-4。

执行字符转换的最常用库之一是ICU库,例如,某些boost库使用它。

Ignacio是正确的,如果不使用一些罕见的汉字(或一些已灭绝的脚本),则映射是一对一的。(官方术语是“如果你没有BMP以外的字符”)

这就是算法,以防万一: 但是,对于你的真实情况来说,很可能是无用的


您还可以使用Unicode()的免费源代码。

好问题。我只是不知道如何正确地做,但使用一些脚本,将修改源代码+1…不需要脚本。我可以用手工来做,只是不知道什么是正确的等价物。你不能用-FLUX ExcCuSETSETUT-16使GCC使用相同的字符集,像Visual C++ + LITB:它不能解决与其他没有这种选择的编译的库接口时的问题。1.
L"\x00e4\x00a0\x597d"