utf-8转ansi linux c,如何使用标准c将UTF-8转换为ANSI

几天前,有人回答说,如果我有一个C 11编译器,我可以试试这个:

#include

#include

#include

string utf8_to_string(const char *utf8str, const locale& loc)

{

// UTF-8 to wstring

wstring_convert> wconv;

wstring wstr = wconv.from_bytes(utf8str);

// wstring to string

vector buf(wstr.size());

use_facet>(loc).narrow(wstr.data(), wstr.data() + wstr.size(), '?', buf.data());

return string(buf.data(), buf.size());

}

int main(int argc, char* argv[])

{

string ansi;

char utf8txt[] = {0xc3, 0xa1, 0};

// I guess you want to use Windows-1252 encoding...

ansi = utf8_to_string(utf8txt, locale(".1252"));

// Now do something with the string

return 0;

}

不知道响应发生了什么,显然有人删除了它.但是,事实证明它是完美的解决方案.对于谁发布,非常感谢,你应该得到AC和upvote !!

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值