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

ノータッチ・デプロイメントでのS-JIS変換

1
投稿者投稿内容
souki
会議室デビュー日: 2003/09/22
投稿数: 4
投稿日時: 2003-09-24 20:08
前回は質問に答えてくださってありがとうございました。
おかげさまで起動時に引数をとることはできるようになったのですが、
今度はその引数に日本語が使われると文字化けして送られるようになりました。
エンコードがunicodeであることがいけないのはわかったので、
S-JIS変換しようと思ったのですが、うまくいきません。
ノータッチ・デプロイメントでなければHttpUtility.UrlEncodeで問題ないのですが、
ノータッチ・デプロイメントでこれを使っているとセキュリティエラーになってしまいます。
protected string sjisEncode( string sorce )
{
  Encoding sjis = System.Text.Encoding.GetEncoding("SHIFT-JIS");
  byte[] utf8String = Encoding.UTF8.GetBytes( sorce );
  byte[] sjisString = Encoding.Convert( Encoding.UTF8, sjis, utf8String );
  return sjis.GetString( sjisString );
}
のような関数を作ってやってみたのですが、Uriは同じものになってしまいました。
S-JIS変換、あるいは日本語の送信をうまくやる方法はないものでしょうか。
souki
会議室デビュー日: 2003/09/22
投稿数: 4
投稿日時: 2003-09-27 15:40
解決とは違うのですが、力業で対応したので参考までに自己レスしておきます。

結論から言うと、S-JIS変換する良い方法は見つかりませんでした。
ですので、変換しないでUriエンコードされた文字列を送ってしまい、
受け取る側でもその文字列を変換しないでそのまま記録してしまいます。
そして、データを受け取るときにデータの先頭に適当なUriを付加してUriオブジェクトを作ってしまいます。
そのUriオブジェクトのToString()を使うと元の文字列が取得できますので、
あとは付加したUri文字列を削除してデータを取得しました。

たぶんもっとスマートな方法があるんでしょうね。
Jitta
ぬし
会議室デビュー日: 2002/07/05
投稿数: 6267
お住まい・勤務地: 兵庫県・海手
投稿日時: 2004-07-09 13:07
引用:

soukiさんの書き込み (2003-09-24 20:08) より:

protected string sjisEncode( string sorce )
{
  Encoding sjis = System.Text.Encoding.GetEncoding("SHIFT-JIS");
  byte[] utf8String = Encoding.UTF8.GetBytes( sorce );
  byte[] sjisString = Encoding.Convert( Encoding.UTF8, sjis, utf8String );
  return sjis.GetString( sjisString );
}


他のことを調べていて行き着いたのですが、これ、SHIFT-JISだからそのままなんでしょうね。SHIFT_JISなら、エンコードされていたと思います。
1

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