首页 > 解决方案 > 如何使用 Win32 API 从 UTF-8 char * 切换到动态编码?

问题描述

我目前正在开发一个在 Node.js 中使用 Hunspell 的项目。目标是一个跨平台的拼写检查,可以正确地使用编码(node-spellchecker)。

我必须使用具有不同编码的任意字典。大多数都SET UTF-8*.aff文件中,但其他字典有编码,如SET ISO8859-1. 我从 Node 获得 UTF-8,但我需要将其转换为字典的编码。然后,我需要将其反向转换以处理建议。

使用 Linux,我可以使用iconv它来转换它,但在 Windows 方面我没有。但是,我不想要求 UTF-8 字典(有效)。

任何关于从哪里开始的建议或提示将不胜感激。WideCharToMultiByte一步使用,但我找不到MultiByteToMultiByte我期望的。

我有的东西

const char *from_encoding_name = "UTF-8"; // This can be swapped
const char *to_encoding_name = "ISO8859-1"; // This can be swapped
const char *word = /* möchtzn encoded in UTF-8 */;

我想要的东西

const char *dictionaryWord = /* möchtzn encoded in ISO-8859-1 */;

谢谢你。

标签: winapiencodingcharacter-encodinghunspell

解决方案


我不认为模拟MultiByteToMultiByte存在于WinAPI. 我会使用两个电话:MultiByteToWideChar然后WideCharToMultiByte.

顺便说一句,我查看了 .Net 方法Encoding.Convert的来源,也有转换是通过.Net 方法完成的UTF-16


推荐阅读