none
行動裝置 Mobile6 將TextBox中的檔案存成*.TXT時,用PDA中的筆記本開會出現亂碼!! RRS feed

  • 問題

  • 各位大家好~

    我是用VB2008,模擬器是用Windows Mobile 6 Professional (CHT)的版本,

    我寫了一個將TextBox中的文字存成*.TXT程式,

    程式碼如下:

    If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
                filename = SaveFileDialog1.FileName
                filewriter = New StreamWriter(filename, True)
                filewriter.Write(TextBox1.Text)
                filewriter.Close()
                MsgBox("存檔成功")
            End If

    存檔時將檔案存成*.TXT的檔案,

    但是我不管是在模擬器上,還是在實體PDA上做測試,

    檔案叫出都是呈現亂碼,

    但是將檔案從實體PDA傳輸當電腦上,

    用電腦打開就可以看到字,

    請問我該如何排除,

    才能夠讓*.TXT的檔案在PDA上可以顯示出來???

    是我的文字編碼PDA不支援嗎???

    還是說我的文字編碼有錯???

    請大家指教~~

    2010年5月3日 下午 07:29

解答

所有回覆

  •             Dim SwFromFileTrueU = _
         New StreamWriter(FileName, True, _
         System.Text.Encoding.Unicode)

    StreamWriter 建構函式 (String, Boolean, Encoding)

    試試Unicode...
    2010年5月4日 上午 01:35
  • Hi, fmp6al4

    您的問題是不是解決了呢?


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守
    2010年5月5日 下午 02:00
    版主
  • 回報各位熱心的前輩們,

    很抱歉昨天我的電腦不小心中毒,所以沒有上來回報,真的很抱歉。

    我利用Joe Hung前輩的方法,在編寫及佈署時沒有出現問題,但是在運行到一半時卻會出現以下的錯誤:

    "第一個可能發生的例外狀況類型 'System.ArgumentNullException' 發生於 mscorlib.dll
     第一個可能發生的例外狀況類型 'System.Reflection.TargetInvocationException' 發生於 mscorlib.dll
     第一個可能發生的例外狀況類型 'System.InvalidOperationException' 發生於 aaa.exe"

    另外我想我可能需要再補充說明一下我的架構,

    我的程式有2個FORM,

    FORM1是用ComboBox寫一個下拉式清單,

    (ComboBox中的選項是中文)

    再利用result的方式將下拉式清單中的選項顯示在FORM2的TextBox中,

    然後再用Joe Hung前輩的方法外加我寫的存檔方式,將TextBox中的顯示文字存入PDA中,

    而我在從Form1跳Form2時,卻會出現上述的錯誤,

    所以我想請問一下各位前輩,

    是我將ComboBox中的文字寫入到TextBox中的語法有誤,

    還是說ComboBox中的文字選項不適合上述語法???

    又或者是我少加入了哪些原件???

    ====================================

    對各位前輩很抱歉,為了要把問題說明清楚,

    所以字多了點,請多多包涵。

    ====================================

    2010年5月5日 下午 03:52
  • 這個錯誤可能和寫檔案沒有關係, 您可以直接於PDA或模擬器中開啟程式寫入的TXT檔案, 看其內容是否正確? 如果正確, 則是其他的部分執行引發的問題
    2010年5月6日 上午 04:13
  • 大家好~~

    我現在只用一個FORM,

    但是在寫入時出現的錯誤還是一樣,

    所以我想大該是我的寫入語法有誤,

    看來要用另一種寫法試試看了。

     

     

    2010年5月7日 下午 04:39
  • 大家好~~

    我現在只用一個FORM,

    但是在寫入時出現的錯誤還是一樣,

    所以我想大該是我的寫入語法有誤,

    看來要用另一種寫法試試看了。

     

     


    Hi, 你貼一下你寫入檔案時相關的程式碼,這樣大家比較好判斷錯誤的部分在哪裡
    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守
    2010年5月10日 下午 06:34
    版主
  • 各位前輩大家好~~

    以下是我寫的程式碼,

    環境不變,設計是兩個FORM

    FORM1是用ComboBox寫一個下拉式清單,

    (ComboBox中的選項是中文)

    再利用result的方式將下拉式清單中的選項顯示在FORM2的TextBox中,

    再用下列程式碼作存檔的動作,

    Imports System.IO
    Imports System.Text
    Public Class Form2
        Dim filename As String
        Dim filewriter As StreamWriter
        Dim path As String
        Dim append As Boolean
        Dim encoding As Encoding

        Dim SwFromFileTrueU = New StreamWriter(filename, True, System.Text.Encoding.Unicode)

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
                filename = SaveFileDialog1.FileName
                filewriter = New StreamWriter(filename, True)
                filewriter.Write(TextBox1.Text)
                filewriter.Close()
                MsgBox("存檔成功")
            End If

    但是在存檔時所出現的錯誤訊息如上述,

    請問各位前輩,是我的寫法錯了嗎???

    PS:我有注意到,我的PDA再開啟*.TXT的檔案,是用Mobile Word,

    而我用Mobile Word看的時候,發現他所存的檔案是*.docx,

    所以我推測,是不是Mobile Word得字碼支援性沒有一般桌機那麼強,

    所以才會出現亂碼。

    2010年5月11日 下午 05:03
  • Hi,

    看起來你實際寫入檔案用的StreamWriter沒有指定到Encoding哩,上面的SwFromFileTrueU 指定了UniCode,但是下面是用filewriter


    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守
    2010年5月12日 下午 01:43
    版主
  • 各位前輩大家好~~

    我這幾天測試的結果,

    發現了一個問題,

    我想因該就是問題的所在,

    我在使用PDA的Mobile Word將檔案存檔時,

    出現的存檔畫面跟我寫的程式一樣,

    但是之中有個地方不一樣,

    就是PDA的Mobile Word在存檔時,

    他的檔案類型中有東西可以選擇,

    也就是說,

    他可以把檔案另存為設定的的其他的類型(如:*.txt;*.docx;*.rtf)

    但我的沒有,

    所以我想請問各位前輩們,

    類型的部分該如何設定,才會有選項可以選擇????

    PS:請問這裡該如何才能貼圖,

    因為我怕用打字方式,你們看不懂我在說啥東東。

    2010年5月15日 上午 05:54
  • Word存檔實有各種檔案類型可選擇,但那些檔案類型都是有自己的格式存在,跟你的問題應無直接關係。在上面回覆過的Encoding的設定相關問題你有測試過了嗎?我用下面程式碼是正常顯示的

    Imports System.IO
    Imports System.Text
    
    Public Class Form1
    
      Dim filename As String
    
      Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        SaveFileDialog1.Filter = "*.txt|*.txt"
        If SaveFileDialog1.ShowDialog() = DialogResult.OK Then
          filename = SaveFileDialog1.FileName
          Dim filewriter = New StreamWriter(filename, True, Encoding.Unicode)
          filewriter.Write("我是中文字12345!@#$%")
          filewriter.Close()
          MsgBox("存檔成功")
        End If
      End Sub
    End Class

    請注意討論區相關規則,良好的討論環境需要大家共同努力、遵守
    2010年5月16日 下午 03:23
    版主