草庐IT

utf8_unicode_cs

全部标签

c++ - 编写unicode C++源代码

我在VisualStudio2012的项目属性中看到您可以为您的应用程序选择字符集。我使用Unicode字符集。多字节字符集有什么问题?或者更好的是,我为什么要使用Unicode?以我正在做的一个DLL中的这段代码为例RECORD_APIintstartRecording(char*cam_name,//Friendlyvideodevicenamechar*time,//Maxtimeforrecordingchar*f_width,//Framewidthchar*f_height,//Frameheightchar*file_path)//Completeoutputfilepa

c++ - 通过非 unicode 代码读取 UTF-8 Unicode 文件

我必须读取一个采用UTF-8编码的Unicode文本文件,并将此数据写入另一个文本文件。该文件包含以制表符分隔的行数据。我的阅读代码是不支持unicode的C++代码。我正在做的是在string/char*中逐行读取文件并将该字符串按原样放入目标文件。我无法更改代码,因此不欢迎提出代码更改建议。我想知道的是,在逐行阅读时,我能否在一行中遇到NULL终止字符('\0'),因为它是unicode并且一个字符可以跨越多个字节。我的想法是,很有可能在一行中遇到NULL终止字符。你的想法? 最佳答案 UTF-8对所有ASCII字符使用1个字节

C++ std::stringstream/ostringstream 和 UTF 字符

我正在编写一个程序来处理一些数据,将其输出到一个.csv文件,然后编写一个GNUplot脚本,然后调用GNUplot来执行该脚本并创建一个具有相同名称(只是扩展名不同)的图像文件.文件名包含UTF字符(我相信是UTF-8?),例如°、φ和θ。当我使用g++4.4.7在Linux中编译和执行它时,所有这些都工作得很好。然后我更改了我的代码以在MicrosoftVisualStudio2008中编译,当我运行该程序时问题就开始了。我使用以下两段代码制作一个标准的文件名字符串(我只是为各种文件添加扩展名)打开流以写入文件(GNUplot脚本和.csv文件之间的唯一区别是扩展名//Genera

c++ - 使用 boost.python 从 UTF-8 编码的 char* 返回 python unicode 实例

我正在尝试做一些应该非常简单的事情,但我不太幸运地从现有文档中弄清楚如何做。对于python2项目,我试图将列表gettext-translated字符串作为unicode实例返回给python。gettext()的返回值是UTF-8编码的char*,使用PyUnicode_FromString将其转换为pythonunicode实例应该非常简单。我觉得这很容易做到,但我似乎不知道怎么做。根据IgnacioVazquez-Abrams和ThomasK的评论,我确实让这个对单个字符串有效;对于这种情况,您可以绕过所有boost.python基础设施。这是一个例子:PyObject*PyM

c++ - 打开具有 unicode 路径的文件

我在Windows7下使用mingw工作。我在使用unicode文件名时遇到了一些奇怪的行为。我的程序需要可移植,我正在使用boost::filesystem(v1.53)来处理文件路径。一切都很顺利,直到我需要打开具有unicode文件名的文件。这与文件的内容无关,而是文件的名称。我尝试了以下操作:为了测试,我创建了一个名为C:\UnicodeTest\вячеслав的文件夹,并尝试在其中创建一个文件,方法是附加文件名test.txt到boostwpath。由于某种原因,文件创建失败。我正在使用boost的fstream,当我尝试打开文件时,设置了流的failbit。现在有趣的是,

c++ - 为什么当我将 std::locale 设置为 "zh_CN.UTF-8"时 std::istringstream 失败?

代码如下:#include#include#includeintmain(){std::locale::global(std::locale("zh_CN.UTF-8"));std::stringstr=u8"8086";std::istringstreamiss(str);inte;iss>>e;if(iss.fail()){std::cout输出是:failede=8086operator>>成功了,但为什么fail()返回true?我在centos7中试过,fail()返回了false,但是当我在macOS中运行时,fail()返回true?为什么?---------------

c++ - VC++ 中 Unicode 字符串的语法是什么?

你应该如何在VC++中使用unicode字符串?当然你应该#defineUNICODE,但是你的字符串呢?应该在所有文本周围使用TEXT()或_T()宏,还是应该在字符串前面放一个L?我相信现在所有的程序都应该使用unicode,所以使用L前缀不是最干净吗?意见? 最佳答案 这取决于你想达到什么目的。如果您想确保您的代码在使用和不使用Unicode时都能正确编译和工作,请使用TEXT或_T宏,并调用“默认”Win32函数名称(例如CreateWindow)。如果你想确保你的程序总是使用UnicodeAPI,那么你应该在你的字符串前面

C++ ShiftJIS 到 UTF8 的转换

我需要转换双字节字符。在我的特殊情况下,将Shift-Jis转换成更好处理的东西,最好是使用标准C++。以下问题最终没有解决方法:DoublebyteencodingsonMSVC(std::codecvt):Leadbytesnotrecognized那么有没有人对如何使用C++标准处理这种转换提出建议或引用? 最佳答案 通常我会推荐使用ICU库,但仅就此而言,使用它的开销太大了。首先是一个转换函数,它接受一个带有Shiftjis数据的std::string,并返回一个带有UTF8的std::string(注意2019:不知道它是

c++ - _T( ) 宏更改为 UNICODE 字符数据

我有一个UNICODE应用程序,我们使用_T(x)定义如下。#ifdefined(_UNICODE)#define_T(x)L##x#else#define_T(x)x#endif我知道L被定义为wchar_t,它在任何平台上都是4个字节。如果我错了,请纠正我。我的要求是我需要L为2个字节。因此,作为编译器hack,我开始使用-fshort-wchargcc标志。但现在我需要将我的应用程序移动到zSeries,在该平台上我看不到-fshort-wchar标志的效果。为了能够在zSeries上移植我的应用程序,我需要修改_T()宏,即使在使用L##x并且不使用-fshort-wchar标

c++ - 将字符串宏/常量转换为宽字符/Unicode

我有一个使用第3方库的UnicodeWin32应用程序,其中一些库为它们的版本信息提供常量作为#defined(窄)字符串。例如,libpng具有以下内容:#definePNG_LIBPNG_VER_STRING"1.5.4"#definePNG_HEADER_VERSION_STRING\"libpngversion1.5.4-July7,2011\n"我将各种静态链接的库版本信息附加到我的关于框以便于版本跟踪,并且将此常量转换为宽字符串似乎很简单。我的第一次尝试是TEXT(PNG_HEADER_VERSION_STRING),但失败了#define__TEXT(quote)L##q