質問をすることでしか得られない、回答やアドバイスがある。

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby

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

Q&A

1回答

1656閲覧

ASCII文字のみで文字列を連結する場合のエンコーディングについて

退会済みユーザー

退会済みユーザー

総合スコア0

Ruby

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

0グッド

0クリップ

投稿2017/08/27 08:38

###該当のソースコード

"aa".encode("UTF-8") + "bb".encode("EUC-JP") => "aabb"

「ASCII文字のみで構成された文字列ならば別エンコーディングでもエラーにならない」という文章があったのですがなぜそうなるのでしょうか?

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

「なぜそうなるのか?」は、その方が便利だからです。
「なぜそうできるのか?」は、多くのエンコーディングがUS-ASCII上位互換だからです。
すべてのエンコーディングがASCII上位互換ではないので、例えば、
"aa".encode("UTF-8") + "bb".encode("UTF-16BE")
は、エラーです。

「XXXというエンコーディングがUS-ASCII上位互換」という意味は、「XXXというエンコーディングは、US-ASCIIの範囲の文字はそのままで、それに文字を追加したもの」という意味です。

投稿2017/08/27 12:23

otn

総合スコア84529

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

退会済みユーザー

退会済みユーザー

2017/08/27 15:52

普通の文字列にしか見えないのですが、どこを見ればASCII文字だとわかるのでしょうか? そもそもASCII文字というものはどういうものなのでしょうか?
退会済みユーザー

退会済みユーザー

2017/08/29 10:34

wikiとかググってみてはもちろんいるのですが意味がよくわからなかったので。すいません。 リファレンスも見てはいるのですが結構意味がわからず難しいです。
otn

2017/08/29 13:02

いわゆる「半角英数記号(キーボードから変換せずに直接打てるもの)」がおおむねASCII文字とイコールです。 別の言い方をすると、UTF-8、Shift_JIS、EUC-JP、ISO-2022-JPその他多くのエンコーディングに於いて、文字コードが 0x00 から 0x7F の文字のことです(これもおおむねの話ですが)。
退会済みユーザー

退会済みユーザー

2017/08/30 09:25

ということは、半角の英数記号同士だとエンコードが違ってても大丈夫な場合が多いということなんですね。
otn

2017/08/30 12:00

そうですね。メジャーどころでは、UTF-16とかUTF-32でなければ、大丈夫でしょう。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

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

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

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問