質問するログイン新規登録

Q&A

1回答

1218閲覧

rubyで文字化けてるコードを日本語にする方法

Kimsehwa

総合スコア312

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

0グッド

1クリップ

投稿2022/02/21 04:10

0

1

ss = "�`�����l����,�`�����l��ID"

このような文字コードを日本語に変換することは可能でしょうか?force_encodingを使ってみましたが、ASCIIコードになりました。

ss.force_encoding("UTF-8")

ss.file_body.force_encoding("EUC_JP")

ss.force_encoding("EUC-JP") => "\x{EFBF}\xBD`\x{EFBF}\x{BDEF}\x{BFBD}\x{EFBF}\x{BDEF}\x{BFBD}\x{EFBF}\xBDl
ss.force_encoding("SJIS") => "\x{EFBF}\xBD`\x{EFBF}\xBD\x{EFBF}\xBD\x{EFBF}\xBD\x{EFBF}\xBD\x{EFBF}\xBDl\x{EFBF}\xBD\x{EFBF}

s3にあるファイルをダウンロードして、その中に上記のような文字コードがありまして、この場合、
アップロードのタイミングで文字化けしないようにする制御が必要でしょうか?(アップロードしてるロジックは僕が触れない状況です。)

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

melian

2022/02/21 05:11

p ss.bytes の実行結果を教えてもらえますか?
Kimsehwa

2022/02/21 08:58

こんな感じでした。。 ss.bytes => [239, 191, 189, 96, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, 189, 239, 191, ]
melian

2022/02/21 09:44

ありがとうございます。その結果から、ss の内容は UTF-8 へのデコードに失敗した、という意味になります(U+EFBFBD が連続しています)。つまり、復元は無理ということになりますね。。。
Kimsehwa

2022/02/21 11:15

つまり、アップロード側でなんとかしないといけないことですね、ありがとうございます!
guest

回答1

0

16表示されているのは、エンコーディングがutf-8でないものを(default_externalがutf-8の状態で)inspectで文字列化して表示しているからです。
puts ss.force_encoding("EUC-JP")等でそのまま表示されますが、euc-jpでもsjisでもなさそうですね。
誤った変換をされて壊れた文字列とかでしょうか。

投稿2022/02/21 06:13

otn

総合スコア86629

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.25%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問