我需要用 C++ 或 C(最需要的)实现一个字符编码转换函数,从自定义编码方案(以在单一编码中支持多种语言)到 UTF-8。
我们的编码非常随机,它 looks like this
由于此映射的随机性,我正在考虑使用 std::map 在两个不同的映射中将我们的编码映射到 UTF,反之亦然,并使用此映射进行转换。他们是否有任何优化的数据结构或方法。
最佳答案
如果您的代码点是连续的,只需制作一个大的 char *
数组并使用它进行翻译。我真的不明白你所说的 UTF-8 代码点是什么意思。 UTF-8 有表示,而 Unicode 有代码点。如果您需要代码点,请使用整数数组。
const int mycode_to_unicode [] = {
0x00ff,
0x0102,
// etc.
};
如果您的编码中存在漏洞以捕获错误,您可以设置一个类似 -1 的值。
换一种方式就是制作一个相同大小的结构数组,例如
struct {
int mycode;
int unicode;
};
将数组的键复制到 mycode 中,将值复制到 unicode 中,并通过 qsort
运行它,并使用比较 unicode
值的函数,然后使用 bsearch
具有从代码点到编码的相同功能。
假设您要使用 C。
关于c++ - 字符解码转换函数实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1748473/