RTF文本格式解析-西班牙语乱码问题

2019-07-13 04:41发布

RTF具体格式讲解不细说(可参考一篇转载的帖子)。关于如题的问题,本人说下自己解决的思路,望大牛们指点: 1.西班牙采用什么编码? 显然,ANSI编码是通用的编码格式(关于编码格式,不多说,太多,http://www.biblioscape.com/rtf15_spec.htm#Heading8,这是RTF格式的详细说明)。
2.采用什么字体属性?(http://blog.pfan.cn/SparkV/9318.html)

字体嵌入

通过在fontemb分组中插装一个字体定义的方式,RTF实现了对字体嵌入的支持。在这个分组当中,嵌入字体的定义可以是指定它的字体文件名,也可以是直接给出它的实际字体数据。如果嵌入字体的定义是用指定文件名的方式给出,那么就需要在fontfile分组中来说明这个字体文件名,并通过cpg控制字来声明该字体文件名所使用的字符集。 RTF支持TrueTypeÒ和其他嵌入式字体。嵌入字体的类型可以通过以下两个控制字来说明。 控制字 嵌入式字体类型 ftnil 未知或缺省字体类型(缺省设置) fttruetype TrueType字体  

代码页支持

RTF里面,允许字体和文档使用不相同的字符集属性。例如,对于Symbol字体来说,不论是在Macintosh系统还是在Windows系统当中,处于同一字集位置上的字符都是相同的。RTF通过cpg控制字来说明字体所使用的字符集。另一方面,定义在嵌入字体中的文件名字段也可以使用与文档字符集不相同的字符集属性。使用cpg控制字就可以更改字体文件名的字符集属性。不过,为了向后兼容于早期的RTF阅读程序,所有的RTF文档都必须保留一个它自己的字符集声明(即ansimacpcpca)。 下表列出了在cpg控制字中所有可用的参数值。 参数值 含义 437 IBM(美国) 708 阿拉伯(ASMO 708 709 阿拉伯(ASMO 449+, BCON V4 710 阿拉伯(transparent阿拉伯 711 阿拉伯(Nafitha Enhanced 720 阿拉伯(transparent ASMO 819 Windows 3.1(美国和西欧) 850 IBM多国语言 852 东欧 860 葡萄牙 862 希伯来 863 加拿大法语 864 阿拉伯 865 挪威 866 苏联 874 泰国 932 日本 936 简体中文 949 朝鲜 950 繁体中文 1250 Windows 3.1(东欧) 1251 Windows 3.1(西里尔文) 1252 西欧 1253 希腊 1254 土耳其 1255 希伯来 1256 阿拉伯 1257 波罗的 1258 越南 1361 Johab
3.使用什么字体? 字体有很多,在西班牙系统上新建一个wordpad,查看字体,使用的是Calibri。那么使用Calibri肯定不会乱。 弄清楚这三个问题,那么乱码问题就解决了。 如下:{ tf1ansiansicpg1252deff0deflang1033deflangfe3082
{fonttbl{f0fmodernfprq6fcharset134 fprq2 Calibri;}}, 3082是西班牙语言的id号,对应十六进制为0C0A。简体为2052,十六进制为0804。