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文档都必须保留一个它自己的字符集声明(即ansi、mac、pc或pca)。
下表列出了在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。