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肯定不會亂。
弄清楚這三個問題,那麼亂碼問題就解決了。
如下:{\rtf1\ansi\ansicpg1252\deff0\deflang1033\deflangfe3082
{\fonttbl{\f0\fmodern\fprq6\fcharset134 \fprq2 Calibri;}},
3082是西班牙語言的id號,對應十六進制爲0C0A。簡體爲2052,十六進制爲0804。