質問: node.inner_text end ``` ### 使用している環境 ruby 2.3.1p112 (2016-04-26 revision 54768) [x86_64-darwin15]
回答: 「kg」(U+338F)はいわゆる機種依存文字であり、本来のShift_JISには**含まれていない**ため、パース前の文字コード変換で失敗していると思われます。`charset`を`"Windows-31J"`にして試して見てください。 【解説】 世間で「シフトJIS」と言われるものは実際は一つでは無く、**多くの亜種が存在します**。主に使われる、または、使われていた物は下記です。 * Shfit_JIS ... IANAに登録されている標準規格のシフトJIS 以下は基本的にこれの拡張。 kg: **割り当てなし** * Windows-31J ... Windows日本語環境でのシフトJIS 別名CP932、MS932等(Rubyでは別名として"SJIS"も使用できる)。記号等が拡張として追加されている。**一般的にシフトJISと言った場合、実際はWindows-31Jの場合がほとんどである。** kg: 87 73 * MacJapanese ... Mac OS 9.xで使われていたシフトJIS Mac OS X(macOS 10)からは標準でUTF-8を使用するようになったため、現在は使用されることはほとんど無い。Windows-31Jと同じように記号等を拡張として追加しているが、追加した部分のコードに**互換性は無い**。そのため、これらの部分を**機種依存文字**と呼ぶようになった。 Rubyでも認識できるが、他のエンコードとの相互変換はできない。 kg: 86 4C ※ 他とは異なる * SJIS-DoCoMo、SJIS-KDDI、SJIS-SoftBank ... 各携帯キャリアが拡張したシフトJIS Windows-31Jからの拡張で絵文字が追加されている。昔の携帯キャリアメールはWindows-31Jでやり取りしており、絵文字が送れるようにするため拡張した。追加された絵文字にキャリア間の互換性は無いが、キャリア間でメールをやり取りする場合は、相互に変換するように協定が結ばれている。Unicodeでの絵文字追加により、iPhone等のスマホを使っている場合はUTF-8が使われるようになっているため、今後徐々に廃れると思われる。 kg: 87 73 * Shfit_JIS-2004 ... JIS X 0213に策定に伴い、JIS X 0213に基づくシフトJIS Shift_JISX0213とも言われる(実際はShift_JISX0213は10文字だけ少ないが、同一視される)。もともとのShift_JISはJIS X 0208を基にしており、JIS X 0213はJIS X 0208の拡張であるため、使用できる文字が増えている。増えた文字の一部はWindows-31Jにも取り入れられているが、もともとWindows-31Jで拡張していた部分(特に機種依存文字の部分)は互換性のためそのままであり、一部互換性が無い所がある。Mac OS X(macOS 10)以降はこちらにも対応している(テキストエディットやSafari等)が、ほとんど使用されていない。**Rubyは対応していない。** kg: 87 73 **自称Shift_JISと言っているサイトのほとんどはWindows-31Jです。**機種依存文字が使われている場合、Shfit_JISとして読み込みすると、処理に失敗したり、文字化けを起こしたりします。ブラウザで見ても、該当のサイトはMac等のWindows以外で見ると文字化けしている可能性が高いです。プライベートなサイトとのことですが、サイト管理者に文字化けしていることを教えて上げるといいと思います。