2017-06-16 55 views
0

這是一個字體名稱:"中arial"如何解碼Adobe InDesign文件中包含的字符串?

我使用的StreamReader讀我的文件:

Dim objReader As New System.IO.StreamReader(parm_strFileName) 
Do While objReader.Peek() <> -1 
    Dim  strFontName = objReader.ReadLine() 
Loop 

價值迴歸是&lt;4E2D&gt;arial

我怎麼能轉換&lt;4E2D&gt;arial"中arial"

更多:

如果我的文字= "トの通りに置換test" 它將編碼是

"<stFnt:fontFamily>&lt;30C8&gt;&lt;306E&gt;&lt;901A&gt;&lt;3‌​08A&gt;&lt;306B&gt;&‌​lt;7F6E&gt;&lt;63DB&‌​gt;test</stFnt:fontF‌​amily>" 
+0

你是如何編碼字符串?它似乎是urlencoding和utf8的混合... – Pikoh

+0

這是Adobe Indesign的一個文件數據。It auto encode。 –

+0

Dim str = ChrW(「&H4E2D」),它會返回str =「中」 –

回答

0

您可以使用是System.IO.StreamReader構造以下過載。假設內容是UTF-8,你可以這樣做:

Dim objReader As New System.IO.StreamReader(parm_strFileName, System.Text.Encoding.UTF8) 

https://msdn.microsoft.com/en-us/library/x8xxf0x5%28v=vs.110%29.aspx?f=255&MSPPError=-2147217396

+0

它無法讀取,在我的文件中的數據是 <4E2D> arial

+0

如果我的文本=「トの通りに置換測試」,它將結束碼爲「 <30C8> <306E> <901A> <308A> <306B> <7F6E> <爲63dB >測試」,如何能再次轉換。 –

0

這是我的解決方案:

 parm_strFont ="&lt;30C8&gt;&lt;306E&gt;&lt;901A&gt;&lt;3‌​08A&gt;&lt;306B&gt;&‌​lt;7F6E&gt;&lt;63DB&‌​gt;test" 
parm_strFont = Web.HttpUtility.HtmlDecode(parm_strFont) 
     Dim rgx As New Regex("<[0-9a-zA-Z]+>") 
     For Each m As Match In rgx.Matches(parm_strFont) 
      Dim strvalue = m.Value 
      strvalue = strvalue.Replace("<", "").Replace(">", "") 
      Dim str = ChrW("&H" & strvalue) 
      parm_strFont = parm_strFont.Replace(m.Value, str) 
     Next 
+0

我試過這段代碼,它不適合我。你的原始字符串有一些「不可打印」的控制字符,所以爲了這個工作,我不得不添加'parm_strFont = Regex.Replace(parm_strFont,「\ p {C} +」,「」) – Pikoh

相關問題