none
vb2010 .net 4.0 轉譯為 3.5 後, 文字出亂碼 RRS feed

  • 一般討論

  • 有一個程式, 編寫時不小心用了 .net 4.0 編譯, 由於不是所有 windows 也用 4.0, 及後轉為 3.5 再編譯, 問題出來了

    原本用 .net 4.0 (File.writeAllText()) 寫入的一些 txt 檔, 當用 3.5 編譯出來的程式開啟後, 發覺有些字元會出現亂碼 (包括英文字), 程式是用 unicode 寫的, 兩個 version 的 textbox 也是 unicode, 找不到問題原因。(並沒有改動任何程式碼, 而且用回 .net 4.0 版本去 read 是正常的)

    請問有沒有人知道發生什麼事?


    • 已編輯 asp.coder 2012年3月27日 下午 03:39
    • 已變更類型 ChenBruceModerator 2012年4月2日 上午 07:39 發問者無後續回覆
    2012年3月27日 下午 03:37

所有回覆

  • 讀取txt的程式碼?
    2012年3月27日 下午 04:17
  • 可能預設轉為 utf8 吧...

    用 VS2010 對話盒開啟你的文字檔,並選擇編碼,確認沒亂碼時,另存新檔,存回你要的格式。


    論壇是網友平等互助 保證解答請至 微軟技術支援服務


    提問時,錯誤情境描述與錯誤訊息很重要,情境描述包含你做了什麼,預期的結果與實際發生的結果。一個最爛的問法範例:「我的電腦電腦怎麼不能開機?」誰知道你家是不是沒電還是你根本找不到電源鈕。

    2012年3月27日 下午 05:00
  • File.WriteAllText 的 MSDN 有一段話:

    這個方法使用不含位元順序標記 (BOM) 的 UTF-8 編碼方式,因此使用 GetPreamble 方法會傳回空的位元組陣列。如果有必要包含 UTF-8 識別項,例如,位元順序標記,請在檔案開頭,使用具有 UTF8 編碼方式的WriteAllText(String,String,Encoding) 方法多載。

    不知你有沒有使用最後那個 Encoding ?


    blog.kkbruce.net
    Plurk
    Google+專頁

    春有百花秋有月,
    夏有涼風冬有雪,
    若無閒事在心頭,
    便是人間好時節。

    2012年3月28日 上午 02:26
  • 由於你沒有貼上你的code,我們很難想象到那裡出錯。請你下次再發問時,同時貼上有關的code。

    對,你可以試試KKBruce的方法,
    File.WriteAllText(FilePath, yourText, Encoding.UTF8)


    大家一齊探討、學習和研究,謝謝!
    Microsoft MVP, Microsoft Community Star(TW & HK), MCT,
    MCSD, MCAD, MCSE+I, MCDBA, MCDST, MCSA, MCTS, MCITP, MCPD
    MVP for VB.NET since 2003

    2012年3月28日 上午 02:40