【发布时间】:2018-12-05 02:11:30
【问题描述】:
在我的程序中,我有一个std::string,其中包含使用“执行字符集”(即not guaranteed to be UTF-8 or even US-ASCII)编码的文本,我想将其转换为包含相同文本但已编码的std::string使用 UTF-8。我该怎么做?
我想我需要一个std::codecvt<char, char, std::mbstate_t> 字符转换器对象,但我在哪里可以获得合适的对象?我必须使用什么函数或构造函数?
我假设标准库提供了一些方法来做到这一点(在某个地方,不知何故),因为编译器本身必须知道 UTF-8(以支持 UTF-8 字符串文字)和执行字符集。
【问题讨论】:
-
@Aconcagua 要使用外部库,我想您需要知道执行字符集的“名称”(或 ID)。但你怎么会得到呢?
-
依赖于操作系统...我不知道任何不使用 UTF-8 作为本机字符集的最新 linux/bsd 发行版,因此您可能不需要关心。 .. Windows:有一些 API,我会开始搜索 GetUserDefaultLCID... 甚至可能其中一个库也提供了合适的 API。
-
如何获取执行字符编码?好吧,有人必须在构建时告诉编译器。如果他们也将其内置到程序的数据中,那么您就可以知道。
标签: c++ utf-8 character-encoding