草庐IT

utf8_unicode_cs

全部标签

c++ - Windows 对其 Unicode 数据类型使用什么 unicode 编码(UTF-8、UTF-16 等)?

同一个Unicode(标准化)有不同的编码table.例如对于UTF-8编码Acorrespondsto0x0041但对于UTF-16编码,相同的A是representedas0xfeff0041。从这里brilliantarticle我了解到,当我使用C++为Windows平台编程并处理Unicode时,我应该知道它以2个字节表示。但它没有说明任何关于编码的内容。(即使它说x86CPU是小端,所以我知道这两个字节是如何存储在内存中的。)但是我还应该知道Unicode的编码,这样我就有了关于符号如何存储在内存中的完整信息。是否有针对C++/Windows程序员的固定Unicode编码?

C++ UNICODE 和 STL

WindowsAPI在UNICODE上似乎很大,您在VisualC++中创建一个新项目并将其默认设置为UNICODE。我想成为一名优秀的Windows程序员,我想使用UNICODE。问题是C++标准库和STL(例如std::string或std::runtime_error)不能很好地与UNICODE一起工作字符串。我只能将std::string或char*传递给std::runtime_error,而且我很确定std::string不支持UNICODE。所以我的问题是,我应该如何使用诸如std::runtime_error之类的东西?我应该混合使用UNICODE和常规ANSI吗?(我

c++ - 如何让 STL std::string 在 Windows 上使用 unicode?

在我的公司,我们有一个跨平台(Linux和Windows)库,其中包含我们自己的STLstd::string扩展,此类在字符串之上提供各种功能;split,format,to/frombase64,等等。最近我们被要求让这个字符串unicode变得“友好”,基本上它需要支持来自中文,日文,阿拉伯文等的字符。经过初步研究,这在Linux端似乎很好因为每件事本质上都是UTF-8,但是我在Windows方面遇到了麻烦;有什么技巧可以让STLstd::string在Windows上作为UTF-8工作吗?有可能吗?有没有更好的办法?理想情况下,我们会让自己基于std::string,因为这是Li

c++ - 使用非 MSVC 编译器在 Windows 下打开带有 Unicode 文件名的文件的 fstream

当文件名为“Unicode”文件名时,我需要将文件打开为std::fstream(或实际上任何其他std::ostream)。在MSVC下我有非标准扩展std::fstream::open(wchar_tconst*,...)?我可以使用GCC(最重要的)和Borland编译器等其他编译器做什么。我知道CRTL提供了_wfopen但它提供了CFILE*接口(interface)而不是io-streams,也许有一种非标准的方式来创建io-stream文件*?是否有任何boost::ifstream带有类似MSVC的Windows扩展? 最佳答案

windows - UTF-16 到 UTF-8 的转换(用于在 Windows 中编写脚本)

将UTF-16文件转换为UTF-8的最佳方法是什么?我需要在cmd脚本中使用它。 最佳答案 有一个GNU工具recode您也可以在Windows上使用。例如recodeutf16..utf8text.txt 关于windows-UTF-16到UTF-8的转换(用于在Windows中编写脚本),我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/265370/

c++ - Windows Unicode C++ 流输出失败

我目前正在编写一个应用程序,它要求我在任意窗口上调用GetWindowText并将该数据存储到一个文件中以供以后处理。长话短说,我注意到我的工具在战地风云3上出现故障,我将问题缩小到窗口标题中的以下字符:http://www.fileformat.info/info/unicode/char/2122/index.htm所以我创建了一个小测试应用程序,它只执行以下操作:std::wcout很低,看吧,这会中断程序其余部分的控制台窗口输出。当MessageBoxW等API等正常显示它时,为什么MSVCSTL会在这个字符(我假设其他字符)上窒息?如何将这些字符打印到我的文件中?在Windo

c++ - 在 C++ Windows 中打开 utf8 编码的文件名

考虑以下代码:#include#include#include#includestd::stringToUtf8(std::wstringstr){std::stringret;intlen=WideCharToMultiByte(CP_UTF8,0,str.c_str(),str.length(),NULL,0,NULL,NULL);if(len>0){ret.resize(len);WideCharToMultiByte(CP_UTF8,0,str.c_str(),str.length(),&ret[0],len,NULL,NULL);}returnret;}intmain(){s

windows - 如何在 Windows 控制台上输出 Unicode 字符串

已经有一些与此问题相关的问题。我认为我的问题有点不同,因为我没有实际问题,我只是出于学术兴趣而问。我知道Windows的UTF-16实现有时与Unicode标准(例如归类)相矛盾,或者更接近旧的UCS-2而不是UTF-16,但出于以下原因,我将在此处保留“UTF-16”术语简单。背景:在Windows中,一切都是UTF-16。无论您是在处理内核、图形子系统、文件系统还是其他任何东西,您都在传递UTF-16字符串。没有Unix意义上的语言环境或字符集。为了与中世纪版本的Windows兼容,有一种叫做“代码页”的东西已经过时但仍然受支持。据我所知,只有一个正确且未过时的函数可以将字符串写入

c - 如何逐行读取unicode(utf-8)/二进制文件

你好程序员,我想逐行读取记事本创建的Unicode(UTF-8)文本文件,我不想在屏幕上显示Unicode字符串,我只想读取和比较字符串!此代码逐行读取ANSI文件,并比较字符串我想要什么逐行读取test_ansi.txt如果行="b"打印"YES!"否则打印“NO!”逐行读取ansi_line.c#includeintmain(){char*inname="test_ansi.txt";FILE*infile;charline_buffer[BUFSIZ];/*BUFSIZisdefinedifyouincludestdio.h*/charline_number;infile=fop

windows - cmd.exe 上的 UTF-16

我已经创建了目录“•◘♬¨ŤlCęół♥☺☻0”,我想使用dir/b命令使其可见。到目前为止,chcp10000、chcp10001和chcp65000(utf-8)命令失败(原始名称显示为“系统无法写入指定的设备”,或显示为空字符串,或unicode字符被替换/忽略。是什么原因以及如何解决它?Theofficialdocumentation没有帮助:( 最佳答案 是的,我刚刚解决了我的问题。这是cmd.exe中默认字体的错误,无法管理unicode符号。要修复它(Windows7x64专业版):打开/运行cmd.exe点击左上角的