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

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

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

Re[11]: 複数の文字コードでファイルを作成するには [1]


(過去ログ 53 を表示中)

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

■29952 / inTopicNo.21)  Re[15]: 複数の文字コードでファイルを作成するには
  
□投稿者/ 小心者 (6回)-(2008/12/16(Tue) 22:56:31)
No29948 (TTT さん) に返信
> すいません。小出しにしているつもりはありません。
> 今出せる情報は出しているつもりです。
単独ファイルに複数の文字コードを混在させる必然性が見つけられません。
扱いが面倒なファイルを苦労して作成するそもそもの目的を教えて下さい。

ひょっとして暗号化が目的ですか?
引用返信 編集キー/
■29953 / inTopicNo.22)  Re[15]: 複数の文字コードでファイルを作成するには
□投稿者/ よねKEN (237回)-(2008/12/16(Tue) 23:24:15)
> すいません。小出しにしているつもりはありません。
> 今出せる情報は出しているつもりです。

No29812 で私はWebアプリですか?と尋ねていますが、ご返答いただいていません。
(今回の質問内容からいえば、この情報はあまり重要ではないですが)

No29791 で、

> StringBuilderを使用することがダメということなんですね。

というふうに理解されたと思っているのですが、
No29946 で提示のコードの抜粋では、なぜかStringBuilder を使ったコードになっています。

バイト列を処理をするためではなく、文字列を処理するためにStringBuilderを使っている
という話であれば、間違った使い方をしているとは限りませんが、提示のコードの抜粋では、
肝心の処理(※)が記述されていませんので、判断できません。

※肝心の処理とは・・・今回の質問の核である
・文字列からSJISとして処理したい文字列の切り出し → SJISのバイト列を作成(1)
・文字列からJISとして処理したい文字列の切り出し → JISのバイト列を作成(2)
・(1)、(2)から最終的なバイト列を作成
の処理のことです。


私が No29886 で、

> どんなコードを書いたのですか?

と聞いているのは、質問時点のソースコードではなく、いろいろな方からの回答を踏まえて修正したコードを見せて欲しい、
という意図で書いたのですが、どうも伝わっていないようです。
(伝わっていないのは私の書き方が悪いせいもあると思いますが)

No29946 で提示のコードの抜粋を見る限り、実際のアプリケーションの処理したい個所で
試行錯誤されているみたいですが、新規に実験用のプロジェクトを作って、そこで
今回の問題を解決するための実験コードを書かれてはいかがですか?

また、質問内容を整理すると

「SJISのファイルを読み込んだ結果の文字列 (つまりただのString)」という入力に対して
「SJISコードとJISコードが混在したバイト配列」という出力を行いたい、
ということですから、以下のようなメソッドを作りたい、というふうに言い換えることができます。

private byte[] 今回の質問の処理メソッド(string input)
{
// 処理
}

引数inputに渡すテストデータ(人に見られても大丈夫なやつ)を用意して、
このメソッドの中の処理を書きましょう。
(実験用のメソッドですから別に512バイトにする必要はなくて、実験的に20バイトくらいでいいですし)

その上で、「// 処理」の部分のロジックをここで曝せば何がまずいのか、
見ている人が指摘することもできます。

引用返信 編集キー/
■29954 / inTopicNo.23)  Re[16]: 複数の文字コードでファイルを作成するには
□投稿者/ よねKEN (238回)-(2008/12/16(Tue) 23:29:02)
No29952 (小心者 さん) に返信
> ■No29948 (TTT さん) に返信
>>すいません。小出しにしているつもりはありません。
>>今出せる情報は出しているつもりです。
> 単独ファイルに複数の文字コードを混在させる必然性が見つけられません。
> 扱いが面倒なファイルを苦労して作成するそもそもの目的を教えて下さい。
>
> ひょっとして暗号化が目的ですか?

#スレ主ではないので、スレ主の意図とは違うかもしれませんが
他システムとデータ交換する場合に、文字コード混在の固定長ファイルを使うことはよくあります。
オープン系だと扱いが面倒ですが、非オープン系だとそう面倒でもないようです。

引用返信 編集キー/
■29955 / inTopicNo.24)  Re[11]: 複数の文字コードでファイルを作成するには
□投稿者/ Jitta (559回)-(2008/12/16(Tue) 23:32:46)
Jitta さんの Web サイト
No29885 TTTさん
> 1行が512バイトのデータを作成したいということです。
> 漢字が含まれる項目についてJISに変換したいです。

 あ、いや、そういうことじゃなくて。。。もっと具体的に書いた方が良かったですね。済みません。
 例えば、「第1章」という文字列の場合、Shift-JIS では
0x91, 0xe6, 0x31, 0x8f, 0xcd
ですが、JIS (ISO-2022-JP) では
0x1b, 0x24, 0x42, 0x42, 0x68, 0x1b, 0x28, 0x42, 0x31, 0x1b, 0x24, 0x42, 0x3e, 0x4f
となります。このうち 0x1b から始まる3バイトは、エスケープ シーケンスです。なお、エスケープ シーケンスは、文字がどの位置にあるかで異なるシーケンスとなるようで、上のコードは正しいとは限りません。
 この例では、2バイト文字1バイト文字2バイト文字と持ってきたので、合計9バイトのエスケープ シーケンスが混入しています(「ESC 文字 ESC 文字 ESC 文字」となるので)。しかし、同じ文字数であっても、2バイト文字、2バイト文字、1バイト文字であれば、エスケープ シーケンスは6バイトで済みます(「ESC 文字 文字 ESC 文字」となるので)。
 すなわち、文字の組み合わせによって、同じ文字数でもバイト数が異なります。よって、「1行が512バイトのデータ」といわれても、その範囲に収めることが出来るかどうかは、どのような文字列を変換するかによって変わってきます。また、当然「512バイトに満たない部分はどうするか」ということも、考えなければなりません。

引用返信 編集キー/
■29957 / inTopicNo.25)  Re[16]: 複数の文字コードでファイルを作成するには
□投稿者/ TTT (9回)-(2008/12/17(Wed) 00:26:38)
No29953 (よねKEN さん) に返信
>>すいません。小出しにしているつもりはありません。
>>今出せる情報は出しているつもりです。
>
> No29812 で私はWebアプリですか?と尋ねていますが、ご返答いただいていません。
> (今回の質問内容からいえば、この情報はあまり重要ではないですが)

Webアプリです。
とりあえずここだけ返答します。
毎回返信ありがとうございます。
引用返信 編集キー/

<前の20件
トピック内ページ移動 / << 0 | 1 >>

このトピックに書きこむ

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

管理者用

- Child Tree -