如何在QTextEdit中显示扩展的ascii字符
how to display extended ascii character in QTextEdit
所有大于127的ASCII代码都被Diamond替换?象征如何显示这些字符。我有一个无符号字符缓冲区[1024],它包含从0到256的值。
使用QString
类的fromAscii()
方法。默认情况下,这将把128以上的Ascii字符视为Latin-1字符。要更改此行为,请使用QTextCodec::setCodecForCStrings
方法为您的使用设置正确的编解码器。
我相信QT5可能已经去掉了setCodecForCStrings
方法。
编辑:Adnan提供了setCodecForCStrings
方法的QT5替代方案,为完整性添加了答案。
setCodecForCStrings
的Qt5替代方案是QTextCodec::setCodecForLocale(QTextCodec::codecForName("UTF-8"));
QTextCodec::setCodecForLocale可用于标识要从中转换的字符集。支持许多编解码器,但由于某种原因,IBM437(美国IBM PC使用了几十年的字符集)不受支持,而欧洲等国家使用的其他几种编解码器也不受支持。也许IBM437中的某些字符从未在Unicode中分配过适当的代码点,所以转换它是不可能的?
令人沮丧的是,有些字体包含所有256个ascii代码点,但根本不可能在Qt中显示这些字体,因为它们只适用于Unicode字符串。有一些字形他们不支持,而且它似乎随着Qt的更新版本而增长。目前我知道9、10、12、13和173。其中一些原因是显而易见的(通常你不想打印回车符,尽管它确实存在于DOS中),但其他一些过去在Qt中工作,现在不行了。
在我的应用程序中,我采用了创建一种新字体的方法,该字体在更高的unicode代码点中复制了不可打印的字形,并在将其打印到屏幕上之前对其进行翻译。这很傻,但Qt多年前就放弃了ascii,所以这是我能找到的最好的选择。
- 是否可以通过C++扩展强制多个python进程共享同一内存
- static_assert在宏中,但也可以扩展到可以用作函数参数的东西
- 如何将这个C++哈希表转换为动态扩展和收缩,而不是使用硬设置的最大值
- 扩展光电二极管探测器以支持多个传感器
- C++中的VLA,扩展名为std=C++11
- C++扩展 ASCII 和负值
- URL 编码扩展的 ASCII 标准::字符串在 C++.
- C++扩展的 ASCII 代码
- "std::isdigit"正在崩溃几个扩展的 ASCII 字符
- C/C :libcurl 扩展ASCII chars =不良的Google Translation API结果
- 阅读ASCII扩展字符
- 如何在字符串中插入扩展的ascii字符
- 为什么扩展的 ASCII(特殊)字符需要 2 个字节才能存储
- 如何在QTextEdit中显示扩展的ascii字符
- 接受扩展的 ASCII 代码作为C++输入
- 流式输出扩展 ASCII
- 使用cin.get()读取扩展ASCII
- 代码::块C++中的扩展Ascii字符
- 扩展的 ASCII 字符C++
- utf 8-如何通过C++通过JNI传递扩展ASCII字符