使用ICU库将UTF-8转换为ASCII
UTF-8 to ASCII using ICU Library
我有一个std::字符串,其中包含UTF-8字符。
我想将字符串转换为最接近ASCII字符的字符串。
例如:
Łód罗兹=>罗兹
Assunção=>Assuncao
Schloß=>Schloss
不幸的是,ICU图书馆真的很难理解,而且我还没有找到关于它使用的好文档,所以我需要太多时间来学习使用它。我没有时间。
有人能举一个例子说明如何做到这一点吗
谢谢
试试这个,ucnv_convert("US-ASCII"、"UTF-8"、targer、targetsize、source、sourcesize、pError)
我不知道ICU,但ICONV可以做到这一点,而且很容易学习。它只需要大约3-4个调用,在您的情况下,您需要使用iconvctl()
来使用ICONV_SET_TRANSLITERATE
标志。
我写了一个回调,它分解,然后进行一些替换。它可能被实现为音译。代码在这里反编译,头在附近。在Unicode到ASCII转换器上安装如下:
ucnv_setFromUCallBack(gConverter, &UCNV_FROM_U_CALLBACK_DECOMPOSE, &status);
然后使用gConverter将unicode转换为ASCII
这不是我擅长的领域,但如果你手边没有一个库可以轻松完成这项工作,那么你最好只创建一个包含UTF-8->ASCII值的查找表/映射。即。键是UTF-8字符,值是ASCII字符序列。
ss分解告诉我你想要兼容性分解。在重症监护室,你需要类Normalizer。之后,你会得到一些像"欧兹"这样的东西。从这个字符串中,您可以简单地删除非ASCII字符。无需ICU,普通STL即可。
相关文章:
- 在C++中使用 ASCII 代码将输入从小写转换为大写
- 我的程序将 26 个字母转换为 ascII 没有显示正确答案
- 我写的 ASCII 到二进制转换器C++向后显示二进制,如何使其正确显示?
- 我正在尝试编写将 ASCII 转换为十进制、添加并转换回 ASCII 的软件
- C++-将ASCII字符数组中可能的数值转换为字符的最简单方法
- 如何将ASCII数字转换为从文件中提取的整数
- 将非 ASCII 字符转换为英语对应字符C++
- 在Qt中将QString转换为ASCII值,反之亦然
- 输出使用 cout 转换为 ASCII 的文本时输出格式不正确,C++
- 如何在不将其转换为 ASCII 字符的情况下显示 QByteArray 的十六进制值
- 如何使用 ASCII 转换使用字符堆栈计算后缀表达式
- C++将 ASCII 转换为莫尔斯电码
- 找到排列的ASCII转换
- c 中的字符串和int的condanation.从ASCII转换为十六进制
- 如何从ASCII转换为字符串或符号
- 从 ASCII 转换回字符
- 将ascii转换为char
- 我如何从ASCII转换到十六进制值,也增加char指针
- 使用c++将ASCII转换成十六进制的无符号int形式
- 将ASCII转换为Unsigned Int,反之亦然