none
請問serial port接收中文問題 RRS feed

  • 問題

  • 我要寫一個收com訊息的程式,但是接收到的中文會變成??,使用.read 方法讀取可以經過轉換編碼可以讀到正確的中文,但是無法確認我要讀多少bytes,所以讀到的東西可能是斷行的,但是使用readline的方法,接收到string後就中文部分全部變成??轉換編碼也不行,那個string轉byte[]後就跟我原本用read讀到的資料不一樣了,我需要收到一整行完整的資料,但是沒法確定傳來的byte有多少,請問有解決的方法嗎?
    2007年7月13日 上午 05:55

解答

  • 只送出 ASCII 的話就不可能送出中文碼了吧。

    或者你要先收集好送來的 Byte 資料,

    再用 System.Text.Encoding.GetEncoding("big5").GetString(); 看看。

    2007年7月13日 上午 06:39
    版主

所有回覆

  • 你有設定 SerialPort 的 Encoding 嗎 ?
    2007年7月13日 上午 06:33
    版主
  • 是預設值ASCII,com是收一台機器的訊息他送的是ASCII,我無法設定他,收到的訊息是中文英文跟數字混在一起的
    2007年7月13日 上午 06:36
  • 只送出 ASCII 的話就不可能送出中文碼了吧。

    或者你要先收集好送來的 Byte 資料,

    再用 System.Text.Encoding.GetEncoding("big5").GetString(); 看看。

    2007年7月13日 上午 06:39
    版主
  • 非常感謝你!問題解決了,直接設定serialport的.Encoding = Encoding.GetEncoding("BIG5");就很神奇的可以使用readline去處理了,一直來都以為Encoding後面只能接ASCIIEncoding、UTF8Encoding、UTF32Encoding、UnicodeEncoding等,結果接.GetEncoding("BIG5"),就很神奇的不用轉碼了;
    2007年7月13日 上午 06:57