假設我有一個 utf8 編碼的檔案,我開啟的時候是用 
string command = File.ReadAllText ("path...", Encoding.UTF8);>>那麼 command 會是 utf8 編碼還是會被轉為系統編碼?
然後我想要轉為位元陣列的話請問應該是用
byte[] bytes = Encoding.Default.GetBytes (command.ToCharArray ());
還是必須要用
Encoding.UTF8.GetBytes (command.ToCharArray ());
我希望最終能確保我的 bytes 變量編碼是 ascii,(我要傳送到 rs-232 的 com port 上用的)所以我是否需要在做一次轉換編碼?
Encoding.Convert (Encoding.UTF8, Encoding.ASCII, command);
或是這樣?
Encoding.Convert (Encoding.Default, Encoding.ASCII, command);
我對 Window Form application 的編碼運作不是很了解,怕有所誤解導致最終要送的 command 編碼有問題,所以有請大俠說明一下,感恩。

解决方案 »

  1.   

    编码只在位元层阶有意义,
    对于 string , .net 本生使用 unicode.就是, 位元组 + 位元组使用的编码  -> 字符串(string)string 生成时, 根据选择的编码, 可以生成不同字元集的位元组.
      

  2.   

    直接:
    byte[] bytes = Encoding.ASCII.GetBytes (command);//注意大小写
      

  3.   

    string command = File.ReadAllText ("path...", Encoding.UTF8);对文档内的二进制数据使用 UTF8 编码解读, 
    解读后的文字放入万国码表示的 command 中.记得 rs-232 传输是 7-bit 传输?
    如果是, 自己转换为适合的格式就不了解了..net 对串行线有内置的流支持.参考一下 System.IO.Ports 名字空间.
      

  4.   

    to mngzilin因為 command 中間我還需要做一些字串處理,所以不能直接用 bytes 讀入
      

  5.   

    不同的编码读取与写入会造乱码的。
    原来是UTF-8转成ASCII,如果有汉字的话,会出现乱码。
     command.ToCharArray ()  此句对编码进行了处理