@IT会議室は、ITエンジニアに特化した質問・回答コミュニティ「QA@IT」に生まれ変わりました。ぜひご利用ください。
- PR -

JIS変換とSJIS変換の方法がわかりません

投稿者投稿内容
ロロノア・ゾロ
会議室デビュー日: 2004/12/08
投稿数: 4
投稿日時: 2004-12-08 16:08
入門者の為、わかりませんでした。
C#で下記の変換方法を教えてください。

Unicode→JIS変換とUnicode→SJIS変換。

以上、よろしくお願いします。
burton999
ぬし
会議室デビュー日: 2003/10/06
投稿数: 898
お住まい・勤務地: 東京
投稿日時: 2004-12-08 16:24
ここが参考になるかと。

http://dobon.net/vb/dotnet/string/getencoding.html


ロロノア・ゾロ
会議室デビュー日: 2004/12/08
投稿数: 4
投稿日時: 2004-12-08 16:44
burton999さん、回答ありがとうございます。
ただ、言葉が足りませんでしたが、
「System.Text.Encoding.GetEncoding(932).GetBytes(str)」までは、
出来ていたのですが、byte型にセットした後にstring型にセットしたいのです。
元のバイト数を変えずに変換する。
上記でわかりますか?(説明が下手な為)

以上、お願いします。
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2004-12-08 17:18
引用:

ロロノア・ゾロさんの書き込み (2004-12-08 16:44) より:

出来ていたのですが、byte型にセットした後にstring型にセットしたいのです。


String クラス(http://www.microsoft.com/japan/msdn/library/ja/cpref/html/frlrfSystemStringClassTopic.asp)
引用:
テキスト、つまり一連の Unicode 文字を表します。

とありますけど。
「string型にセット」だとすると、せっかくUnicode→JIS(またはシフトJIS)変換したのに、更にUnicodeへ再変換することになってしまうことを意味しますが、それでいいのですか?
引用:

元のバイト数を変えずに変換する。


文字コード変換をしたのにバイト数を変えないとは??
それっていったい……。

[ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2004-12-08 17:20 ]
ぢゃん♪
大ベテラン
会議室デビュー日: 2003/06/12
投稿数: 208
お住まい・勤務地: 都内
投稿日時: 2004-12-08 17:29
で、以上はStringクラス(string型)の話ですが……。
もしかして、テキストファイルにJISコードやShift_JISコードで出力したい、という話ですか?
# そうだとすると、質問が省略しすぎ……。

その場合は、たとえばSystem.IO.StreamReaderSystem.IO.StreamWriterの、コンストラクタに Encodingクラスを指定するものを使うとか。

[ メッセージ編集済み 編集者: ぢゃん♪ 編集日時 2004-12-08 17:34 ]
ロロノア・ゾロ
会議室デビュー日: 2004/12/08
投稿数: 4
投稿日時: 2004-12-08 17:55
ぢゃん♪さん、回答ありがとうございます。
省略しすぎてますね。ごめんなさい。
VB(16Bit版)からの移行で、データをRS232Cで通信をしています。
よって、バイト数を変えずにってことです。
”ロロノア・ゾロ”(14Byte)→”%m%m%N%"!&%>%m”(14Byte)と
なるようにしたいのです。             以上、お願いします。
なちゃ
ぬし
会議室デビュー日: 2003/06/11
投稿数: 872
投稿日時: 2004-12-08 18:59
引用:

ロロノア・ゾロさんの書き込み (2004-12-08 17:55) より:
VB(16Bit版)からの移行で、データをRS232Cで通信をしています。
よって、バイト数を変えずにってことです。
”ロロノア・ゾロ”(14Byte)→”%m%m%N%"!&%>%m”(14Byte)と
なるようにしたいのです。             以上、お願いします。


多分、なぜ「よってバイト数云々」になるのかだれもわからないと思います…
Unicodeとの間で変換したいのは、何のためですか?
「.NET での文字列はUnicodeだから」とかいう理由ではないですか?

そもそも文字コードを変えるって事は、バイト列を変えるって事です。バイト数が変わる可能性があるのも当然です。

単に.NETで扱える文字列にしたいって話なら、普通はバイト数が同じとか気にする必要(意味)はありませんよ(というかそもそも普通無理ですし)。
べる
ぬし
会議室デビュー日: 2003/09/20
投稿数: 1093
投稿日時: 2004-12-08 20:17
引用:
「System.Text.Encoding.GetEncoding(932).GetBytes(str)」までは、
出来ていたのですが

このままわたせばいいんじゃないですか?(932はs-jisですよね)

引用:
よって、バイト数を変えずにってことです。

やっぱりよく意味がわかりませんが、たとえば
「abcd(unicodeで8バイト)」→「abcd(jisで4バイト)」とバイト数は変わりますが
いいんですよね?あと、jisの場合切り替え制御文字とかも入りますし。

引用:
VB(16Bit版)からの移行で

そもそもVBではどうやってわたしてたんでしょう。そこを書けば誰かわかるかもしれませんし。

スキルアップ/キャリアアップ(JOB@IT)