为什么UChar*不适用于此ICU转换
why UChar* is not working with this ICU conversion?
从 UTF-8 转换为 ISO-8859-6 时,此代码不起作用:
UnicodeString ustr = UnicodeString::fromUTF8(StringPiece(input));
const UChar* source = ustr.getBuffer();
char target[1000];
UErrorCode status = U_ZERO_ERROR;
UConverter *conv;
int32_t len;
// set up the converter
conv = ucnv_open("iso-8859-6", &status);
assert(U_SUCCESS(status));
// convert
len = ucnv_fromUChars(conv, target, 100, source, -1, &status);
assert(U_SUCCESS(status));
// close the converter
ucnv_close(conv);
string s(target);
return s;
图片: (1,2)
但是,当用硬编码的UChar[]替换UChar*时,它工作得很好!!图片 : (3)
看起来你正在采取困难的方法。这个怎么样:
static char const* const cp = "iso-8859-6";
UnicodeString ustr = UnicodeString::fromUTF8(StringPiece(input));
std::vector<char> buf(ustr.length() + 1);
std::vector<char>::size_type len = ustr.extract(0, ustr.length(), &buf[0], buf.size(), cp);
if (len >= buf.size())
{
buf.resize(len + 1);
len = ustr.extract(0, ustr.length(), &buf[0], buf.size(), cp);
}
std::string ret;
if (len)
ret.assign(buf.begin(), buf.begin() + len));
return ret;
相关文章:
- 防止主数据类型C++的隐式转换
- 模板参数替换失败,并且未完成隐式转换
- 努力将整数转换为链表。不知道我在这里做错了什么
- HEX值到wchar_t字符(UTF-8)的转换
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将 Qvector<uint8_t> 转换为 QString
- 如何在cuSparse中使用cusparseXcoo2csr从coo转换为csc
- 有关插入适配器的错误。[错误]请求从 'back_insert_iterator<vector<>>' 类型转换为非标量类型
- 在c++中使用nlohmann从类到json的转换
- Ubuntu上的库ICU不想从Unicode转换为Windows-1251
- 如何在 c++ Linux 中使用 ICU 库将 UnicodeString 转换为 windows-1251
- UTF-8到UCS-2与icu库的转换
- 如何从 Windows 代码页码获取 ICU 转换器
- C++ 将 UTF-8 字符串转换为 ICU 的 StringPiece
- 如何使用ICU将update从一个时区转换为另一个时区
- ICU c++转换编码
- 如何使用ICU将Unicode代码点转换为C++中的字符
- 我可以在 ICU 中从字符*转换为 UChar 吗?
- 为什么UChar*不适用于此ICU转换
- 使用ICU库将UTF-8转换为ASCII