在Windows和Linux下,用C语言将UTF-16转换为UTF-8
我想知道是否有一种推荐的“交叉”Windows和Linux方法用于将字符串从UTF-16LE转换为UTF-8?或者每个环境应该使用不同的方法 我设法在谷歌上搜索了一些对“iconv”的引用,但由于某些原因,我找不到基本转换的示例,例如-将wchar_t UTF-16转换为UTF-8 任何人都可以推荐一种“交叉”的方法,如果你知道参考资料或样本指南,将不胜感激 谢谢,Doori Bar开源非常常用。在Windows和Linux下,用C语言将UTF-16转换为UTF-8,c,unicode,utf-8,utf-16,C,Unicode,Utf 8,Utf 16,我想知道是否有一种推荐的“交叉”Windows和Linux方法用于将字符串从UTF-16LE转换为UTF-8?或者每个环境应该使用不同的方法 我设法在谷歌上搜索了一些对“iconv”的引用,但由于某些原因,我找不到基本转换的示例,例如-将wchar_t UTF-16转换为UTF-8 任何人都可以推荐一种“交叉”的方法,如果你知道参考资料或样本指南,将不胜感激 谢谢,Doori Bar开源非常常用。\include #include <iconv.h> wchar_t *src =
\include
#include <iconv.h>
wchar_t *src = ...; // or char16_t* on non-Windows platforms
int srclen = ...;
char *dst = ...;
int dstlen = ...;
iconv_t conv = iconv_open("UTF-8", "UTF-16");
iconv(conv, (char*)&src, &srclen, &dst, &dstlen);
iconv_close(conv);
wchar_t*src=…;//或char16_t*在非Windows平台上
int srclen=。。。;
char*dst=。。。;
int-dstlen=。。。;
iconv_t conv=iconv_open(“UTF-8”、“UTF-16”);
iconv(conv,(char*)&src,&srclen,&dst,&dstlen);
iconv_关闭(conv);
如果您不想使用ICU
感谢各位,这就是我如何解决“跨”windows和linux要求的方法:
MinGW
和MSYS
libiconv
源程序包MSYS
编译libiconv
就是这样。还有一个,它是一个仅标题的库。我也遇到了这个问题,我使用
试试看
{
std::string utf8=boost::locale::conv::utf\u to\u utf(
(短*)wcontent.c_str(),
(短*)(wcontent.c_str()+wcontent.length());
content=boost::locale::conv::from_utf(utf8,“ISO-8859-1”);
}
捕获(boost::locale::conv::conversion\u错误e)
{
std::cout使用PowerShell将编码更改为UTF-8:
powershell -Command "Get-Content PATH\temp.txt -Encoding Unicode | Set-Content -Encoding UTF8 PATH2\temp.txt"
如果已安装MSYS2,则iconv
软件包(默认安装)允许您使用:
iconv -f utf-16le -t utf-8 <input.txt >output.txt
iconv-f utf-16le-t utf-8 output.txt
在UTF-8、UTF-16、UTF-32、wchar-is库之间转换字符串的另一种可移植的C语言可能性。请看前面的问题:谢谢马克,但我恐怕它对我来说太低级了。我想是“UTF-16”和“UTF-8”应该交换位置。iconv…从哪里来?回答:#包含–另外,这似乎是Linux特有的。是一个跨平台库,在许多平台上都可以使用,包括Linux。在Windows 2008 R2上效果很好。还添加了BOM。
iconv -f utf-16le -t utf-8 <input.txt >output.txt