c++ - 如何在 C++ 中制作我自己的字符编码?

标签 c++ character-encoding

我需要在 C++ 中定义一个字符集。我已经查看了文档here ,但我正在寻找的是更广泛的范围。例如我有像 this 这样的字母.

为了输入这些字符,我会制作一个虚拟键盘。我假设我已经为每个角色提供了代码。我有这个字符集的字体。问题是,当我从虚拟键盘按下一个键时,它会将键写为例如“q”。在文本字段中,它看起来像是我展示的照片中的字母之一,但在背景中,实际字母是“q”。当我将该字母复制到其他地方时,它会写“q”字母。 Example Image

虽然我无意将那些字母复制到其他地方,但我想给他们一个代码,当我写的时候,它会与'q'不同。

如果我不使用至少两种古代语言,那么用“q”表示该字母不会有问题。 (古希腊、古土耳其)

它将类似于 ASCII 编码,但与程序外部隔离。

我希望我能很好地描述我的问题。

最佳答案

好吧,让我们试一下答案。

首先,不要为窄字符而烦恼。这只是一个痛苦的工作。使用 wchar_t。其次,在相关系统上,wchar_t映射到某种形式的Unicode,而Unicode有一个Private Use Area (PUA)。为每个角色分配 PUA 值。这会处理文本的二进制表示。

其次,您需要一个输入法。这是特定于操作系统的,您还没有指定哪个操作系统。而且我们不知道你有什么脚本,所以我们不知道字符键是一对一映射还是更复杂。

最后,您需要一种显示这些脚本的方法。这可以通过两种方式解决。要么你向操作系统提供一种字体,让操作系统用它渲染你的文本,要么你自己接管渲染。两者都不容易,而且都在一定程度上特定于操作系统(我们仍然不知道)。

关于c++ - 如何在 C++ 中制作我自己的字符编码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28815299/

相关文章:

c++ - 将可执行文件加载到当前进程的内存中,然后执行它

c++ - 在调用 C++ 运算符重载时识别调用上下文/用法

c++ - 非常量复制构造函数和返回值的隐式转换

java - 如何解决在 JSF 和 Primefaces 中使用标题的奇怪字符时的编码问题

url - 将编码字符添加到 url 会破坏 htaccess

c++ - 静态变量继承 C++

c++ - 如何通过像素完美缩放/移动来修复 SFML 顶点数组中的垂直伪影线?

unicode - 寻找一个UTF-8文本编辑器

delphi - 将 Hi-Ansi 字符转换为等效的 Ascii 字符 (é -> e)

c# - 有没有办法在 C# 中以字节为单位告知 UTF-8 编码字符串的长度?