问题标签 [codecvt]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
100 浏览

c++ - C ++无法实例化codecvt以在txt文件中写入unicode

地狱0,

我需要用 c++ 编写一个支持 unicode 的文本文件(实际上是 csv 文件,但是是 nvm)。我必须修改的源代码已经很好用了,但只支持 ANSI。它与 wofstream 一起工作:

我到处找到的简单解决方案是:

但由于某些原因,我无法实例化 codecvt,visualStudio 告诉我参数不符合声明。我不明白为什么。我的一个猜测是我的编译器不支持它,但现在我不知道该怎么想。

我还尝试了另一种解决方案:通过手动编写第一个字符来声明文件以 utf-16 编码,如下所示:

它正在工作(导出的文件以 utf-16 编码)但它把我所有的写入文件都弄乱了,因为我需要在 utf-16 中“转换”我的 CString,但经过 2 天的尝试,我无法得到一些工作。

如果我可以使用第一个解决方案,那就太棒了,但我真的不明白为什么我的编译器不想这样做。我在互联网上找不到有同样问题的人。如果有人知道它为什么这样做,或者有另一个替代解决方案来编写 utf-16 txt 文件,那将非常感激 <3

0 投票
1 回答
2935 浏览

c++ - std::string 到 std::wstring 的便携式转换,反之亦然?

我需要将 std::string 转换为 std::wstring。我在 Visual Studio 2010 的以下行中使用了一些东西(并且工作正常):-

但是,当我在其上构建它时gcc 4.3.4,它会给出错误:-

谁能给我一些方法来以独立于平台的方式进行这种转换。

0 投票
4 回答
24732 浏览

c++ - 已弃用的标头替代品

一点前景:我的任务需要将 UTF-8 XML 文件转换为 UTF-16(当然要使用正确的标题)。所以我搜索了将 UTF-8 转换为 UTF-16 的常用方法,发现应该使用<codecvt>.

但是现在当它被弃用时,我想知道做同样任务的新常用方法是什么?

(完全不介意使用 Boost,但除此之外,我更喜欢尽可能接近标准库。)

0 投票
1 回答
1914 浏览

c++ - 为什么`wstring_convert`会抛出range_error?

我有 C++ 代码,string它将包含AQUA REGIA 的炼金术符号)转换为u16string

请注意,我使用wstring或任何istream.

这给了我std::range_error

但是在 ideone 上,这段代码运行没有错误

使用-std=c++14.

为什么ideone没有错误,为什么我收到这个错误?


我有arch linux 4.12.13,locale命令给了我:

0 投票
0 回答
1106 浏览

c++ - C++utf8 字符串转 utf16

我想将字符串转换为 utf-16 wstring。我写了以下代码:

上面的示例适用于包含 unicode 的字符串(例如std::string str="\u0061\u00e9")或没有特殊字符的字符串。但我的第一个例子不起作用。

我得到以下异常:Microsoft C++ exception: std::range_error at memory location 0x00A9E7E4 程序停在那里:converter.from_bytes(str);

当我添加该行时str[1]=130; // é,一切正常,所以我猜签名字符是问题的原因。我需要使用一串签名字符,因为我想通过 tcp 套接字发送数据。

如何执行转换,以便我可以使用套接字发送数据?

提前致谢。

0 投票
1 回答
170 浏览

c++ - 在 wifstream 析构函数中中止

以下 C++ 代码在执行时出现神秘错误(“调试错误!...abort() 已被调用”)return。这是 Visual Studio 2017 15.6.3,程序是 64 位调试版本,在 64 位 Windows 7 下运行。是什么导致了这个错误,我该如何解决?

使用调试器跟踪显示消息来自反汇编指令

msvcp140d.dll堆栈上的最后一个条目,除了vcruntime140d.dllucrtbased.dll

这段代码的目的是输入文件infile是 Unicode(小端),我正在将它读入一个std::string变量。

0 投票
0 回答
117 浏览

c++ - std::codecvt_utf8 使用 MSYS2 Bash 和 CMD 处理错误输出

重现:codecvt.cpp

使用 GCC 6.3.0 编译:g++ codecvt.cpp -o codecvt -O3

视窗命令codecvt.exe

输出:Test String O├û U├£ S┼Ş i─░ ─▒I

MSYS2 重击$ ./codecvt.exe

输出:(Test String O├û U├£ S┼Ş i─░ ─▒I相同)

适用于 Windows 10 Bash 的 Ubuntu 子系统

使用 GCC 5.4.0 编译:g++ codecvt.cpp -o codecvt -O3

执行:./codecvt

输出:Test String OÖ UÜ SŞ iİ ıI

我最近一直在努力解决 C++ 中的宽字符问题。我遇到了这个解决方案,但代码似乎只在 linux 环境中工作。(我是 C++ 初学者(ish))

我还尝试了其他一些解决方案:

第一个解决方案

setlocale(LC_ALL, "");

Windows CMD 根据需要输出,没有问题。但是输入是错误的。

MSYS2 Bash 没有按要求输出,但输入正确。

适用于 Windows 10 Bash 的 Ubuntu 子系统在输入和输出方面都是正确的。

第二种解决方案

locale::global(locale("C.UTF-8"));

Windows CMD 和 MSYS2 Bash 在程序启动时都崩溃了,MSYS2 Bash 还报告了:

what(): locale::facet::_S_create_c_locale name not valid

Ubuntu 子系统 Bash 仍然很酷,可以正确地用于输入/输出。

我猜这是与Windows相关的问题?

0 投票
1 回答
735 浏览

c++ - “codecvt_utf8_utf16”和“codecvt_utf8”从UTF-8转换为UTF-16的区别

我遇到了两个代码片段

和,

它们都是将存储的 utf-8 转换std::string为 utf-16 in 的正确方法std::wstring吗?

0 投票
1 回答
56 浏览

c++11 - 如何使用 wstring_convert 在 utf16 和 utf32 之间进行转换?

当你要从std::u16stringto 时,可以说std::u32stringstd::wstring_convert不能按预期工作chars。那么如何使用作为输入std::wstring_convert在 UTF-16 和 UTF-32 之间进行转换呢?std::u16string

例如 :

reinterpret_cast可以吗char,正如我在几个例子中看到的那样?

如果您确实需要reinterpret_cast,我已经看到了一些使用字符串大小而不是指针总字节大小的示例。这是错误还是要求?

我知道codecvt已弃用,但在标准提供替代方案之前,它必须这样做。

0 投票
1 回答
1462 浏览

r - 在 Windows 上安装 odbc R 包时出现问题

我想安装 odbc R 包但安装失败。显然,我想念codecvt,但我不知道它是什么以及如何获得它。有人可以帮助我吗?谢谢

我收到以下消息: