- 將客戶提供的Word檔另存成RTF格式
- 在RTF檔案中設定要被取代為字串的變數
- 客戶端點選連結下載時將字串代入RTF檔案並將副檔名更改為*.doc
在RTF中,中文字會以16進位來儲存,而某些中文字的16進位字元的某兩個字元組合恰巧會是某些符號的16進位字元。如此,當我們做字串取代後,有可能會發生取代後的文字在顯示時出現亂碼,甚至是檔案無法開啟的情況。
要解決此問題,我們必須在取代RTF檔案內的變數前,就先將我們要代入的字串轉成16進位,並加入特殊字元的前置符號\'後再進行取代,如此才能正常顯示中文字。以下程式片段可將一字串轉換為16進位並加入特殊字元的前置符號。
要解決此問題,我們必須在取代RTF檔案內的變數前,就先將我們要代入的字串轉成16進位,並加入特殊字元的前置符號\'後再進行取代,如此才能正常顯示中文字。以下程式片段可將一字串轉換為16進位並加入特殊字元的前置符號。
Public Shared Function GetRtfCode(ByVal str As String) As String Dim sb As New StringBuilder() Dim Bytes() As Byte = Encoding.Default.GetBytes(str) For Each b As Byte In Bytes sb.Append("\'" & IIf(b < 16, "0" & Hex(b), Hex(b))) Next Return sb.ToString().ToLower()End Function參考