C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

C#でのエンコードについて


(過去ログ 5 を表示中)

[トピック内 9 記事 (1 - 9 表示)]  << 0 >>

■5593 / inTopicNo.1)  C#でのエンコードについて
  
□投稿者/ 初心者 二等兵(1回)-(2006/08/17(Thu) 20:32:47)

分類:[C#] 


分類:[C#] 

プログラム初心者です。
WinCEでプログラムを走らせているのですが、
その時の文字のエンコードをUnicodeに変更しなくてはいけません。
Shift_JISからの変更だったので下のようなプログラムを書いて見ました。

using System.Text;

StringBuilder _DataArry;
string DataArry = _DataArry.Tostring();

byte[] test = Encoding.Unicode.GetBytes(DataArry);
DataArry = Encoding.Unicode.Getstring(test);

しかし、ビルドをすると
引数を'1'個指定できる、メソッド'GetString'のオーバーロードはありません。
とエラーが出てしまいます。

どこがいけないか、どなたか教えていただけませんか?


0
引用返信 編集キー/
■5598 / inTopicNo.2)  Re[1]: C#でのエンコードについて
□投稿者/ επιστημη 軍曹(70回)-(2006/08/17(Thu) 21:20:56)
επιστημη さんの Web サイト

分類:[C#] 

class Convert {
public static void Main() {
byte[] sjis = { 0x8a, 0xbf };
string unic = System.Text.Encoding.GetEncoding("Shift_jis").GetString(sjis);
System.Console.WriteLine("[{0}]", unic);
}
}

[漢]と出力されるはず。


0
引用返信 編集キー/
■5599 / inTopicNo.3)  Re[2]: C#でのエンコードについて
□投稿者/ 初心者 二等兵(3回)-(2006/08/17(Thu) 21:30:32)

分類:[C#] 

さっそくの返信ありがとうございます。
byte[] sjis = {0x8a,0xbf};
のところですが、それが使えません。
ほかのファイルからの情報が、_DataArryに格納されているんです。
(うまく伝わらないかもしれませんが)

GetStringの引数のエラーと関係あるのでしょうか?

No5598に返信(επιστημηさんの記事)
> class Convert {
> public static void Main() {
> byte[] sjis = { 0x8a, 0xbf };
> string unic = System.Text.Encoding.GetEncoding("Shift_jis").GetString(sjis);
> System.Console.WriteLine("[{0}]", unic);
> }
> }
>
> [漢]と出力されるはず。
>

0
引用返信 編集キー/
■5600 / inTopicNo.4)  Re[3]: C#でのエンコードについて
□投稿者/ なちゃ 二等兵(2回)-(2006/08/17(Thu) 22:03:48)

分類:[C#] 

> ほかのファイルからの情報が、_DataArryに格納されているんです。
> (うまく伝わらないかもしれませんが)

StringBuilderに格納できるのはUnicode文字です。
Shift_JISがそこに入っているという時点でどこかおかしいです。

なにやってるか想像できないわけでもないですが、
そのやり方ではおそらく正しく解決できません。


0
引用返信 編集キー/
■5602 / inTopicNo.5)  Re[3]: C#でのエンコードについて
□投稿者/ επιστημη 軍曹(71回)-(2006/08/17(Thu) 22:45:47)
επιστημη さんの Web サイト

分類:[C#] 

> byte[] sjis = {0x8a,0xbf};
> のところですが、それが使えません。

…え? ここんとこにファイルから読み出したバイト列をねじ込むんですケド。


0
引用返信 編集キー/
■5603 / inTopicNo.6)  Re[4]: C#でのエンコードについて
□投稿者/ επιστημη 軍曹(72回)-(2006/08/17(Thu) 22:54:34)
επιστημη さんの Web サイト

分類:[C#] 

No5602に返信(επιστημηさんの記事)
>>byte[] sjis = {0x8a,0xbf};
>>のところですが、それが使えません。
>
> …え? ここんとこにファイルから読み出したバイト列をねじ込むんですケド。

ちゅーか、テキストファイルを読むのなら、
StreamReaderにエンコーディングを指定できますケド。

/* Convert.cs :
* Shift_jis エンコーディングされた
* テキスト・ファイル(オノレ自身)を読む
*/
class Convert {
public static void Main() {
System.IO.StreamReader reader =
new System.IO.StreamReader("Convert.cs",
System.Text.Encoding.GetEncoding("Shift_jis")); // ←ココ
string line;
while ( (line = reader.ReadLine()) != null ) {
System.Console.WriteLine(line);
}
reader.Close();
}
}


0
引用返信 編集キー/
■5698 / inTopicNo.7)  Re[5]: C#でのエンコードについて
□投稿者/ 初心者 二等兵(4回)-(2006/08/19(Sat) 23:02:15)

分類:[C#] 

掲示板に書いてくれた皆さん。ありがとうございました。
それとひとつお詫びが・・・Shift_JIS→Unicodeに変換しなければいけませんでした。
ある媒体からの通信でShift_JISがWinCEに送られます。
そこで
StringBuilder _DataArry = new StringBuilder(120);
string DataArry = _DataArry.ToString();
byte[] test = Encoding.GetEncoding(932).GetBytes(DataArry);
byte[] test2 = Encoding.Unicode.GetBytes(DataArry);
として、「あ」を送ってみたのですが・・・
testには「3f3f」、test2には「82a0」が入っていました。
test2はUnicodeでbyteに代入しているから、この「82a0」はすでに「あ」ではないんですよね?

また、stringに下記のコードで変換してみました。
string DataArry2 = Encoding.Unicode.GetString(test,0,test.Length);
string DataArry3 = Encoding.Unicode.GetString(test2,0,test2.Length);

この時、DataArry2は「□」DataArry3は「,」が入っていました。
WinCEに入るときに、他人の作ったDLLを通っているんですが、
この現象は正しいのでしょうか?
どうすれば「あ」が表示できるのでしょうか?

すみませんが、お願いします。

0
引用返信 編集キー/
■5701 / inTopicNo.8)  Re[6]: C#でのエンコードについて
□投稿者/ επιστημη 軍曹(75回)-(2006/08/19(Sat) 23:36:35)
επιστημη さんの Web サイト

分類:[C#] 

No5698に返信(初心者さんの記事)
> ある媒体からの通信でShift_JISがWinCEに送られます。
> そこで
> StringBuilder _DataArry = new StringBuilder(120);
> string DataArry = _DataArry.ToString();

うーん、StringBuilderで受けるってのが何とも…
タダのバイト列 byte[] でもらってくれば

System.Text.Encoding.GetEncoding("Shift_jis").GetString(もらったバイト列);

で'できあがり'なんすけど。



0
引用返信 編集キー/
■5705 / inTopicNo.9)  Re[7]: C#でのエンコードについて
□投稿者/ 初心者 二等兵(5回)-(2006/08/20(Sun) 08:33:41)

分類:[C#] 

返事ありがとうございます。
やっぱりそこに原因があるのか・・・
DLLの中身も調べないといけないですね。

やってみます!!
いつも返信、本当にありがとうございます。


>
> うーん、StringBuilderで受けるってのが何とも…
> タダのバイト列 byte[] でもらってくれば
>
> System.Text.Encoding.GetEncoding("Shift_jis").GetString(もらったバイト列);
>
> で'できあがり'なんすけど。
>
>

0
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -