RTF文本格式解析-西班牙語亂碼問題

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。




發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章