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

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

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

Re[6]: バイト配列の変換について [1]


(過去ログ 171 を表示中)

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

■98407 / inTopicNo.21)  Re[8]: バイト配列の変換について
  
□投稿者/ KOZ (167回)-(2021/11/13(Sat) 07:55:11)
No98406 (KOZ さん) に返信
> 2021/11/13(Sat) 07:39:27 編集(投稿者)
>
> ■No98404 (めんこ さん) に返信
>>“81h C5h” (2バイトコード)で出力することを求められており、いろいろ試行錯誤してたのですが
>
> BitConverter を使えばいい話なのでは?
>
> Dim bytes As Byte() = New Byte(1) {&H81, &HC5}
> Dim strEn As String = New String(BitConverter.ToChar(bytes, 0), 1)
>
>

すみません。なんだか読み違えてました。
解決済み
引用返信 編集キー/
■98434 / inTopicNo.22)  Re[8]: バイト配列の変換について
□投稿者/ めんこ (9回)-(2021/11/16(Tue) 09:37:27)
魔界の仮面弁士様
KOZ様

ご回答ありがとうございます。
上記から試してみたのですが、韓国語に変換がかかってしまうようで
上手く変換できなかったのですが、外部に81C5の文字を持たせて
Replace関数を使って、文字置き換えした所、81C5で出力することが出来ました。

なんとか実現できましたのでご報告させていただきます。
皆様のご支援ありがとうございました。
引用返信 編集キー/
■98441 / inTopicNo.23)  Re[6]: バイト配列の変換について
□投稿者/ めんこ (10回)-(2021/11/16(Tue) 13:11:40)
No98403 (魔界の仮面弁士 さん) に返信
> ■No98400 (めんこ さん) に返信
>>下記でしてみたのですが、どこか間違えていますでしょうか。
>
> 逆に質問してみますが、何を期待して、実際にはどうなってしまっていますか?
>
>
> そもそもの質問内容は、
> >>> 文字化けコードなので、処理で自動的に置き換わっていると思うのですが
> >>> このコードを取得したいので
> でしたよね。
>
> それを知る方法として、
> >>Catch ex As DecoderFallbackException を拾ってみてください
> を紹介しました。
>
> GetEncoding の第2/第3引数に対しては、
>  不正なデータを何らかの代替文字へ置き換えて処理するなら、EncoderReplacementFallback/DecoderReplacementFallback
>  不正なデータを変換エラーとして捉えて処理するなら、EncoderExceptionFallback/DecoderExceptionFallback
> を指定するようになっています。そしてこのうち、後者の手法を採った際には、その変換エラーが
> EncoderFallbackException/DecoderFallbackException としてスローされる仕様です。
>
>
> 後者の方法であれば、文字コード変換の際に、不正データがあったかどうかを確認できますし、
> 不正データがあったとして、それがどの位置の何というコードだったのかを調べる事が出来ます。
> また、例外処理を使えば、そのエラーをログとして残したり、あるいはデータ提供元に対して、
> 不正では無いデータの再提出を依頼するような仕組みを設けたりもできるでしょう。
>
>
> そしてその結果、実際にお書きになったコードというのが
>>Catch ex As DecoderFallbackException
>>Debug.Print(ex.Message)
> だったわけですが…結果として、Message の出力だけでは十分な結果が得られなかったということでしょうか?
>
> それが求める結果と違っているというのであれば、どういう結果が欲しいのか、
> あるいはどのような動作を期待しているのか明確に示してみてください。
>
> 「どこか間違えていますでしょうか」と聞かれましても、
> そもそも何を期待してそのコードを書いたのかを説明して頂かないと、判断が付かないです。
>
>
> で…どういう動作を期待しているにせよ、単に Message を得るだけであれば、
>  Catch ex As Exception
> でもあまり変わらないと思います。しかし、折角、
>  Catch ex As DecoderFallbackException
> を使っているのですから、この例外クラスならではメンバーも確認しておいた方が良いのでは無いでしょうか?
> https://docs.microsoft.com/ja-jp/dotnet/api/system.text.encoderfallbackexception?view=netframework-4.8
解決済み
引用返信 編集キー/
■98503 / inTopicNo.24)  Re[9]: バイト配列の変換について
□投稿者/ shu (1263回)-(2021/11/25(Thu) 09:31:23)
No98434 (めんこ さん) に返信
> 魔界の仮面弁士様
> KOZ様
>
> ご回答ありがとうございます。
> 上記から試してみたのですが、韓国語に変換がかかってしまうようで
> 上手く変換できなかったのですが、外部に81C5の文字を持たせて
> Replace関数を使って、文字置き換えした所、81C5で出力することが出来ました。
>
> なんとか実現できましたのでご報告させていただきます。
> 皆様のご支援ありがとうございました。

解決されたようですが、外部に持たせるというのが不具合のもとになりそうな気がします。
元の配列をaとして
エンコードした文字列を逆変換したバイト列をb
としたときに
aとbの差分で抽出するのはどうでしょうか?

引用返信 編集キー/

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

このトピックに書きこむ

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

管理者用

- Child Tree -