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

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

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

文字コードを間違って保存したファイルを修正したい

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

■85194 / inTopicNo.1)  文字コードを間違って保存したファイルを修正したい
  
□投稿者/ 綾瀬さとみ (1回)-(2017/09/19(Tue) 00:08:41)

分類:[C#] 

sjisのソースをeucでダウンロードし
UTF8で保存してしまいました。
当然文字化けします

sjisでダウンロードしなおして
UTF8で保存すれば解決なのですが

ファイルを修正することは可能なのでしょうか?

https://ameblo.jp/only-human/entry-10104676221.html
このブログを参考に試行錯誤してますが
うまくいきません。

ご見識がおありの方アドバイスお願いします。

using (WebClient wc = new WebClient())
            {
                wc.Encoding = Encoding.GetEncoding(51932);//euc
                StreamWriter sw = new StreamWriter(HOZON_PATH + filename + ".txt", false, Encoding.UTF8);
                sw.Write(wc.DownloadString("http://hoge.html"));
                sw.Close();
            }

引用返信 編集キー/
■85195 / inTopicNo.2)  Re[1]: 文字コードを間違って保存したファイルを修正したい
□投稿者/ Hongliang (568回)-(2017/09/19(Tue) 10:27:39)
不可能と考えていいでしょう。
引用返信 編集キー/
■85197 / inTopicNo.3)  Re[1]: 文字コードを間違って保存したファイルを修正したい
□投稿者/ WebSurfer (1313回)-(2017/09/19(Tue) 11:58:51)
No85194 (綾瀬さとみ さん) に返信

すでに Hongliang が答えを書かれていますが、もう少し詳しく何故不可能なのかを書きます。

> ファイルを修正することは可能なのでしょうか?

デコードできないバイト列がある決まった文字コードに置き換えられてしまうと、そこで情報が失われるので、
どんな手段を使っても返還後のバイト列から元の文字情報を取得することは
できません。

例えば、Unicode デコーダーでは、デコードできない 2 バイトのシーケンスが REPLACEMENT_CHARACTER (U+FFFD)
に置き換えられます。'&#65533;' という文字に化けているのを見たことはありませんか?

WebClient.DownloadString メソッド& Encoding.GetEncoding(51932) を実際に試してみましたが、デコード
できないと A1 A6 というバイト列(EUC では '・' に該当)に変換されるようです。

'&#65533;' とか '・' からでは元の文字は何だったか分からないというところは理解できるでしょうか?
引用返信 編集キー/
■85198 / inTopicNo.4)  Re[1]: 文字コードを間違って保存したファイルを修正したい
□投稿者/ WebSurfer (1314回)-(2017/09/19(Tue) 12:03:38)
No85194 (綾瀬さとみ さん) に返信

上のレスで REPLACEMENT_CHARACTER (U+FFFD) がコピペではうまくアップできず '&#65533;'
になってしまいましたが、実際にブラウザなどで見ると以下の記事の画像の赤枠で囲った部分
のように見えると思います。

ASP.NET Core で文字化け
http://surferonwww.info/BlogEngine/post/2017/06/16/decoding-problem-caused-by-view-created-by-scaffolding-in-aspnet-core-project.aspx
引用返信 編集キー/
■85211 / inTopicNo.5)  Re[2]: 文字コードを間違って保存したファイルを修正したい
□投稿者/ 綾瀬さとみ (2回)-(2017/09/20(Wed) 21:00:40)
皆様ご返信頂き誠にありがとうございます。
解決済み
引用返信 編集キー/

このトピックをツリーで一括表示


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

このトピックに書きこむ