- 締切済み
C#のシリアル通信プログラムで文字化け
Visual C#でRS-232のシリアル通信をするプログラムを作成しましたが、 受信データが文字化けを起こしてしまいます。 下のURLにソースを置いているので、どこが不味いのか教えてください。 http://www1.axfc.net/uploader/Sc/so/205741 よろしくお願いいたします。
- みんなの回答 (3)
- 専門家の回答
みんなの回答
- SortaNerd_
- ベストアンサー率59% (309/522)
言い方が悪かったのかなあ…。 「どのような文字を送ると、どのような文字になって出るのか」を書いて欲しかったのですが。 ただ、そのレベルの問題ではなさそうですね。 文字コードをいろいろ試しているようですが、何を送っているのか分からないのですか? そうであればまず何を送っているか分かっているデータを受信してみるのが先です。 また、文字としてまともに見えないようですので、バイナリデータで考えた方が良いと思います。
- SortaNerd_
- ベストアンサー率59% (309/522)
まずどのように文字化けするのかを書いたほうが良いと思います。
- joqr
- ベストアンサー率18% (742/4026)
ソース見たくないんで SJISに変換して、送りましょう 文字化けは、C#だとユニコードで送って、受け側がSJISで表示とか・・・ 良くあるパターンです 相手が制御機とかだとしたら、文字化けの原因は文字コードの不整合です
補足
ShiftJISも試してみましたが、やはり文字化けしました。 通信の相手はdsPIC30F4011です。 受信部のソースは以下のようになっています。 private void serialPort1_DataReceived(object sender, System.IO.Ports.SerialDataReceivedEventArgs e) { int dataLength = serialPort1.BytesToRead; byte[] rcvbuf = new byte[dataLength]; serialPort1.Read(rcvbuf, 0, dataLength); string ReceivedData = Encoding.GetEncoding("Shift_JIS").GetString(rcvbuf, 0, dataLength); textBox2.AppendText(ReceivedData); }
補足
Shift_jis:・と漢字の文字化け utf-8:・が表示されるのみ utf-16:・とàが表示される これで何か分かりますでしょうか?