
こんにちは。
現在、Visual Studio 2005 C#を使っています。
ネットワーク経由で機器の情報を取得しようとしているのですが、文字化けが起きてしまいました。
調べてみると'c0','b2','d1'と帰ってきていて、これらはS-jis半角カナの'タ','イ',’ム’を表しているようです。
少し省略していますが以下のような手順で確認しています
private void buttonStart_Click(object sender, EventArgs e)
{
TcpClient client =
new TcpClient(textBoxIP.Text,int.ParstextBoxPort.Text));
NetworkStream netStream = client.GetStream();
StreamReader sr = new StreamReader(netStream);
StreamWriter sw = new StreamWriter(netStream);
sw.AutoFlush = true;
sw.WriteLine("TestCommand");
string s = sr.ReadLine();//ここで文字化け
}
StreamReader,StreamWriterの設定でEncoding指定が出来るようですが、sjisは無かったように思いました。
(defaultはUTF-8になっているようですので文字化けしたようです。)
どのようにすれば、sjisで文字列を取得できるでしょうか?
No.1ベストアンサー
- 回答日時:
>sjisは無かったように思いました。
Shift_JISはちゃんとあると思うけど?
http://msdn.microsoft.com/en-us/library/system.t …
> 932 shift_jis Japanese (Shift-JIS)
http://msdn.microsoft.com/en-us/library/wzsz3bk3 …
実装するのが面倒くさかったのでTCPClient使わず
byte配列をMemoryStreamに書き込んでみたコード:
using System;
namespace Q5013966
{
public class Q5013966
{
public static void Main(){
System.IO.MemoryStream s = new System.IO.MemoryStream();
s.Write(new byte[]{0xc0,0xb2,0xd1},0,3);
s.Seek(0,System.IO.SeekOrigin.Begin);
System.IO.StreamReader sr = new System.IO.StreamReader(s,System.Text.Encoding.GetEncoding(932));
System.Console.WriteLine(sr.ReadLine());
System.Console.ReadKey(true);
System.Console.WriteLine(System.Text.Encoding.GetEncoding(932).GetString(new byte[]{0xc0,0xb2,0xd1}));
}
}
}
>System.IO.StreamReader sr = new System.IO.StreamReader(s,System.Text.Encoding.GetEncoding(932));
で設定できるんですね…。
Encoding.で設定できるプロパティが
Unicode,UTF7,UTF8,UTF32しか見当たらないので設定できないのかなと思ってしまいました。
無事解決しました。
参照先も確認させていただきます。
ご回答ありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
C#でのWNetAddConnection3の使...
-
C# DataGridView列カスタマイズ
-
C#で別のFormへ複数の値を返そ...
-
C# visibleプロパティをfalseに...
-
JSPファイルから、ActionFormの...
-
パスがとおらない・・・
-
ORA-01858: 数値を指定する箇所...
-
C言語のポインターに関する警告
-
0dの意味を教えてください
-
オブジェクトの中のプロパティ...
-
ダブルクォーテーションを含む...
-
JSPやサーブレットでSystem.out...
-
System.err. printlnとSystem.o...
-
csv出力について
-
ダブルクォーテーションのrepla...
-
nullcline
-
Formの値が変更されたかどうか...
-
tomcatのstdout.logを停止したい。
-
文字コード変換
-
IF関数でEmpty値を設定する方法。
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
大量のデータを読み込んで表示...
-
Junitテストでvoid戻り値メッソ...
-
C#でキーイベントが発生しない...
-
ボタンの複数割り当てについて
-
C#で、あるクラスのメンバーす...
-
C#から、C++で作成したdll内の...
-
C# WinForm のDataGridView Cel...
-
C#でのWNetAddConnection3の使...
-
C# 親フォームで指定した値を...
-
C# 矢印キーの取得
-
unityでのC++エラーの原因がわ...
-
C# DataGridView列カスタマイズ
-
コンボボックスを使う時の警告
-
C#で、定数をフラグ(if文)に...
-
C# MouseHoverを何度も呼ぶには
-
C#で別のFormへ複数の値を返そ...
-
正規表現
-
【Java】画像表示が出来ない!
-
C# visibleプロパティをfalseに...
-
JavaのSwingで別のフォーム...
おすすめ情報