Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/141.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++;在Linux上编写UTF-8 我在Visual Studio:C++中用C++编写的Windows上的代码如下 FILE* outFile = fopen(outFileName, "a,ccs=UTF-8"); fwrite(buffer.c_str(), buffer.getLength() * sizeof(wchar_t), 1, outFile); std::wstring newLine = L"\n"; fwrite(newLine.c_str(), sizeof(wchar_t), 1, outFile); fclose(outFile);_C++_Utf 8_Internationalization_Fopen - Fatal编程技术网

C++;在Linux上编写UTF-8 我在Visual Studio:C++中用C++编写的Windows上的代码如下 FILE* outFile = fopen(outFileName, "a,ccs=UTF-8"); fwrite(buffer.c_str(), buffer.getLength() * sizeof(wchar_t), 1, outFile); std::wstring newLine = L"\n"; fwrite(newLine.c_str(), sizeof(wchar_t), 1, outFile); fclose(outFile);

C++;在Linux上编写UTF-8 我在Visual Studio:C++中用C++编写的Windows上的代码如下 FILE* outFile = fopen(outFileName, "a,ccs=UTF-8"); fwrite(buffer.c_str(), buffer.getLength() * sizeof(wchar_t), 1, outFile); std::wstring newLine = L"\n"; fwrite(newLine.c_str(), sizeof(wchar_t), 1, outFile); fclose(outFile);,c++,utf-8,internationalization,fopen,C++,Utf 8,Internationalization,Fopen,这将正确地以UTF-8写出文件。 当我在Linux上编译和运行相同的代码时,会创建该文件,但长度为零。如果我按以下方式更改fopen命令,则会创建文件,且长度不为零,但所有非ASCII字符都显示为垃圾: FILE* outFile = fopen(outFileName, "a"); ccs=UTF-8在Linux gcc上不工作吗?不,在Windows上完成的扩展在Linux、OS-X、Android、iOS和其他任何地方都不工作。微软只是做了这些扩展,以实现您编写与其他平台不兼容的代码

这将正确地以UTF-8写出文件。 当我在Linux上编译和运行相同的代码时,会创建该文件,但长度为零。如果我按以下方式更改fopen命令,则会创建文件,且长度不为零,但所有非ASCII字符都显示为垃圾:

  FILE* outFile = fopen(outFileName, "a");

ccs=UTF-8在Linux gcc上不工作吗?

不,在Windows上完成的扩展在Linux、OS-X、Android、iOS和其他任何地方都不工作。微软只是做了这些扩展,以实现您编写与其他平台不兼容的代码

将宽字符串转换为包含UTF-8的字节字符串,然后像往常一样将字节写入文件。 有很多方法可以做到这一点,但最标准的兼容方法可能是:

#包括
#包括
#包括
#包括
使用Converter=std::wstring\u convert;
int main()
{

std::wstring wide=L“ÖïTiib这可能是因为您的控制台具有与utf-8不同的字符集”如果模式不是上面列出的字符串之一,则行为未定义。某些实现定义了其他支持的模式(例如Windows)“因此,
ccs=UTF-8
是一个MS扩展。如何在Linux上更改fopen命令以确保它写出UTF-8?一种方法是首先将wchar\u t转换为一个字节(
char
)UTF-8编码单元数组。然后写出UTF-8编码单元数组。你能给我举个例子吗?谢谢。这对我很有用。你的名字像“Öö”,你一定是特殊字符处理方面的专家!再次感谢!