最近Ruby chr
とord
のメソッドで作業していましたが、理解できないことがいくつかあります。Rubyの.chrと.ordのメソッドを理解しようとしています
私の現在のプロジェクトでは、個々の文字を順序値との間で変換します。私が理解しているように、 "A"のような個々の文字列を持っていて、その上にord
を呼び出すと、ASCIIテーブルの位置が65になります。逆数値を呼び出すと、65.chr
は私に文字値 "A"を与えます。これは、Rubyが順序付けられた文字の値のどこかにコレクションを持ち、このコレクションを使用して、特定の文字または特定の位置の文字の位置を私に与えることができることを示しています。私はこれについて間違っているかもしれません、私がいれば私を修正してください。
Rubyのデフォルトの文字エンコーディングはUTF-8を使用しているため、何千もの文字を使用できることも理解しています。私はこのような何かのためにそれを求めるならこのように:
22909.chr
私は「例外RangeErrorを得る:
'好'.ord
私はその値にchr
を呼び出す場合、しかし22909.でその文字の位置を取得します: char範囲外の22909です。私はchar
を拡張ASCIIである255までの値に作用させることしかできません。だから、私の質問は以下のとおりです。
- なぜRubyはUTF-8から拡張ASCII文字セットから
chr
の値を取得しているように見えるが、ord
のでしょうか? - Rubyにこれらのメソッドを使用するときに異なるエンコーディングを使用するように指示する方法はありますか?例えば、デフォルトにしているものの代わりにASCII-8BITエンコーディングを使用するように指示しますか?
- デフォルトのエンコードを変更することができる場合は、使用可能な文字の総数を取得する方法はありますか?
http://apidock.com/ruby/Integer/chrには、 '' 22909.chr(Encoding :: UTF_8) ''のようなものを使うことができます。エンコーディングには、代わりに '' Encoding :: ASCII_8BIT''があります。 –
@NabeelAmjad答えとして投稿する必要があります。 –
これは非常に役に立ちました。私はそれを見ていなかったので、これは私がどこに行くのかを私に遠くまで伝えます。今私が欠けているのは、特定のエンコーディングに使用できる文字数を取得する簡単な方法です。たとえば、ASCII_8BITは256文字、UTF_8は約1文字です。100万人はい、回答として投稿してください。 –