如何解决在 RTF 中指定 utf-8 字符编码?文本UTF-8格式在 Sqlite 中正确显示
如何设置UTF-8字符编码格式的字符在RTF中的字符编码?
我研究了类似的问题,但没有找到好的解决方案。所以,我希望你能帮上忙。
内容在 Sqlite 数据库中。 Slqite 数据库中的文本只能使用 UTF-8、UTF-16 或类似格式进行格式化。所以这就是我必须坚持使用 UTF-8 的原因。
使用 Sqlite 数据库浏览器正确显示了 e"。
所需的目标程序只能读取RTF,显示字符奇怪。
我试过例如:
{\rtf1\ansi\ansicpg0\uc0...
{\rtf1\ansi\ansicpg1252\uc0...
{\rtf1\ansi\ansicpg65001\uc0...
一个选项是将特殊字符映射到它们的 RTF-char 等效项,如 this table 所示。
解决方法
您提到的网站链接到 Unicode in RTF:
如果字符在 255 到 32,768 之间,则表示为 \uc1\unumber*
。例如,字符号 21,487,在 RTF 中是 \uc1\u21487*
。
如果字符在 32,768 和 65,535 之间,则减去 65,536,并使用结果负数。例如,是字符 36,947,所以我们减去 65,536 得到 -28,589,我们在 RTF 中有 \uc1\u-28589*
。
如果字符超过65,535,那么我们无法用RTF来表达
看起来 RTF 根本不知道 UTF-8,一般只知道 Unicode。其他答案 for Java 和 C# just 直接使用 \u
。
我在很多地方读到 RTF 没有 UTF-8 标准解决方案。
因此,我在扫描了一半的互联网后创建了自己的转换器。如果您有标准/更好的解决方案,请告诉我!
所以在学习了 this book 之后,我创建了一个基于 these character mappings 的转换器。很棒的资源。
这解决了我的问题。重新使用其他解决方案是我想为此类功能做的事情,但我找不到,唉。
转换器可能类似于:
while(1):
# some code before
f=matrix(OPT['c1M'].T)
Ain=sparse_to_spmatrix(OPT['AinM'])
OPT['Xu']=np.reshape(OPT['Xu'],(len(OPT['Xu']),1))
OPT['Xd'] = np.reshape(OPT['Xd'],(len(OPT['Xd']),1))
Bin=matrix(np.vstack([OPT['BinM'],OPT['Xu'],-OPT['Xd']]))
Aeq=sparse_to_spmatrix(OPT['AeqM'])
Beq=matrix(OPT['BeqM'])
sol = solvers.lp(f,Ain,Bin,Aeq,Beq,solver='glpk',options={'glpk':{'msg_lev':'GLP_MSG_OFF'}})
# some code after
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。