https://redmine.ruby-lang.org/
https://redmine.ruby-lang.org/favicon.ico?1711330511
2011-01-14T13:08:00Z
Ruby Issue Tracking System
Ruby master - Feature #4280: SJIS should be an alias of Windows-31J, not of Shift_JIS
https://redmine.ruby-lang.org/issues/4280?journal_id=15234
2011-01-14T13:08:00Z
usa (Usaku NAKAMURA)
usa@garbagecollect.jp
<ul><li><strong>Category</strong> set to <i>M17N</i></li></ul><p>=begin</p>
<p>=end</p>
Ruby master - Feature #4280: SJIS should be an alias of Windows-31J, not of Shift_JIS
https://redmine.ruby-lang.org/issues/4280?journal_id=15244
2011-01-14T16:05:55Z
kosaki (Motohiro KOSAKI)
kosaki.motohiro@gmail.com
<ul></ul><p>=begin<br>
FYI:</p>
<p>Javaでは SJIS==Shift_JIS ですね。以下でJavaの歴史的経緯が説明されているようです。</p>
<p><a href="http://www.ingrid.org/java/i18n/encoding/shift_jis.html" class="external">http://www.ingrid.org/java/i18n/encoding/shift_jis.html</a></p>
<p>=end</p>
Ruby master - Feature #4280: SJIS should be an alias of Windows-31J, not of Shift_JIS
https://redmine.ruby-lang.org/issues/4280?journal_id=15245
2011-01-14T16:35:26Z
usa (Usaku NAKAMURA)
usa@garbagecollect.jp
<ul></ul><p>=begin<br>
こんにちは、なかむら(う)です。</p>
<p>In message "<a href="https://blade.ruby-lang.org/ruby-dev/43030">[ruby-dev:43030]</a> [Ruby 1.9-Feature#4280] SJIS should be an alias of Windows-31J, not of Shift_JIS"<br>
on Jan.14,2011 16:05:56, <a href="mailto:redmine@ruby-lang.org" class="email">redmine@ruby-lang.org</a> wrote:</p>
<blockquote>
<p>Javaでは SJIS==Shift_JIS ですね。以下でJavaの歴史的経緯が説明されているようです。</p>
<p><a href="http://www.ingrid.org/java/i18n/encoding/shift_jis.html" class="external">http://www.ingrid.org/java/i18n/encoding/shift_jis.html</a></p>
</blockquote>
<p>我々は彼らの失敗を踏まえているので、Shift_JISとWindows-31Jが<br>
ごっちゃになったりはしていません(えっへん)。<br>
よって、IANA charsetにあるような名前をそれと異なる意味にした<br>
いという発想はありません。</p>
<p>で、「SJIS」という名前に対しては特に公的な定義が存在しない状<br>
況のはずです(何かあったら教えてください)。<br>
なので、その意味は慣用で決まっているのだと思いますが、Ruby界<br>
隈においては「$KCODEに指定するもの」というのが最も一般的な現<br>
れ方なのではないかと思うわけです。<br>
であれば、それに合わせるべきではないでしょうか。</p>
<p>さて、JavaではなぜSJIS==Shift_JISなんでしょうか。<br>
Javaの「Shift_JISにまつわる」歴史的経緯は小崎さんに示していた<br>
だいた文書にあるとおりだと思いますが、「SJISについては」特に<br>
なんの説明も無くShift_JISと同じとして扱われてますよね?</p>
<a name="それでは"></a>
<h2 >それでは。<a href="#それでは" class="wiki-anchor">¶</a></h2>
<p>U.Nakamura <a href="mailto:usa@garbagecollect.jp" class="email">usa@garbagecollect.jp</a></p>
<p>=end</p>
Ruby master - Feature #4280: SJIS should be an alias of Windows-31J, not of Shift_JIS
https://redmine.ruby-lang.org/issues/4280?journal_id=15246
2011-01-14T16:57:14Z
naruse (Yui NARUSE)
naruse@airemix.jp
<ul></ul><p>=begin<br>
まだ考え中ですが、今のところ特に反対要素はありません。</p>
<p>まず、現状 SJIS = Shift_JIS なのは、Java にあわせたものです。</p>
<p>しかし、Java の経緯は、<br>
1.1: SJIS == Shift_JIS<br>
1.2: SJIS, Shift_JIS == MS932<br>
1.4.1: SJIS == Shift_JIS, MS932<br>
なのであんまり参考になりません。</p>
<p>IANA Charsets にも SJIS の規定はないので、これも問題ありませんな。<br>
=end</p>
Ruby master - Feature #4280: SJIS should be an alias of Windows-31J, not of Shift_JIS
https://redmine.ruby-lang.org/issues/4280?journal_id=15247
2011-01-14T17:10:12Z
kosaki (Motohiro KOSAKI)
kosaki.motohiro@gmail.com
<ul></ul><p>=begin<br>
2011年1月14日16:35 U.Nakamura <a href="mailto:usa@garbagecollect.jp" class="email">usa@garbagecollect.jp</a>:</p>
<blockquote>
<p>こんにちは、なかむら(う)です。</p>
<p>In message "<a href="https://blade.ruby-lang.org/ruby-dev/43030">[ruby-dev:43030]</a> [Ruby 1.9-Feature#4280] SJIS should be an alias of Windows-31J, not of Shift_JIS"<br>
on Jan.14,2011 16:05:56, <a href="mailto:redmine@ruby-lang.org" class="email">redmine@ruby-lang.org</a> wrote:</p>
<blockquote>
<p>Javaでは SJIS==Shift_JIS ですね。以下でJavaの歴史的経緯が説明されているようです。</p>
<p><a href="http://www.ingrid.org/java/i18n/encoding/shift_jis.html" class="external">http://www.ingrid.org/java/i18n/encoding/shift_jis.html</a></p>
</blockquote>
<p>我々は彼らの失敗を踏まえているので、Shift_JISとWindows-31Jが<br>
ごっちゃになったりはしていません(えっへん)。<br>
よって、IANA charsetにあるような名前をそれと異なる意味にした<br>
いという発想はありません。</p>
<p>で、「SJIS」という名前に対しては特に公的な定義が存在しない状<br>
況のはずです(何かあったら教えてください)。<br>
なので、その意味は慣用で決まっているのだと思いますが、Ruby界<br>
隈においては「$KCODEに指定するもの」というのが最も一般的な現<br>
れ方なのではないかと思うわけです。<br>
であれば、それに合わせるべきではないでしょうか。</p>
<p>さて、JavaではなぜSJIS==Shift_JISなんでしょうか。<br>
Javaの「Shift_JISにまつわる」歴史的経緯は小崎さんに示していた<br>
だいた文書にあるとおりだと思いますが、「SJISについては」特に<br>
なんの説明も無くShift_JISと同じとして扱われてますよね?</p>
</blockquote>
<p>実は全然思い出せないんですが、SJISはUnix localeでの名前ではなかったですかね。<br>
個人的にはSJISは統一見解がないから使うなとか言いたいんですがそうもいかない<br>
んでしょうね。<br>
歴史的経緯を含む文字コードは何がやっかいかというと、言語の文字コードの規定と<br>
より下位レイヤーのソフト(データベースソフトとか)での文字コードの規定に不一致が<br>
あったときに困るわけで、Rubyの都合だけで決めていいんだろうかというもやもや感と、<br>
イマドキSJISは理解するけどShift_JIS, CP932を理解しないデータベースなんて生き<br>
残っているのだろうかという漠然とした疑問が頭の中で回っていたりします。</p>
<p>どうなんでしょうねぇ。もうちょっと考えます</p>
<p>=end</p>
Ruby master - Feature #4280: SJIS should be an alias of Windows-31J, not of Shift_JIS
https://redmine.ruby-lang.org/issues/4280?journal_id=15248
2011-01-14T17:30:05Z
usa (Usaku NAKAMURA)
usa@garbagecollect.jp
<ul></ul><p>=begin<br>
こんにちは、なかむら(う)です。</p>
<p>In message "<a href="https://blade.ruby-lang.org/ruby-dev/43033">[ruby-dev:43033]</a> Re: [Ruby 1.9-Feature#4280] SJIS should be an alias of Windows-31J, not of Shift_JIS"<br>
on Jan.14,2011 17:10:00, <a href="mailto:kosaki.motohiro@gmail.com" class="email">kosaki.motohiro@gmail.com</a> wrote:</p>
<blockquote>
<p>実は全然思い出せないんですが、SJISはUnix localeでの名前ではなかったですかね。<br>
個人的にはSJISは統一見解がないから使うなとか言いたいんですがそうもいかない<br>
んでしょうね。<br>
歴史的経緯を含む文字コードは何がやっかいかというと、言語の文字コードの規定と<br>
より下位レイヤーのソフト(データベースソフトとか)での文字コードの規定に不一致が<br>
あったときに困るわけで、Rubyの都合だけで決めていいんだろうかというもやもや感と、<br>
イマドキSJISは理解するけどShift_JIS, CP932を理解しないデータベースなんて生き<br>
残っているのだろうかという漠然とした疑問が頭の中で回っていたりします。</p>
<p>どうなんでしょうねぇ。もうちょっと考えます</p>
</blockquote>
<p>真面目なプログラムはSJISとかいうどう考えてもヤバい名前は使わ<br>
ないと思うんですよね。<br>
データベースアクセスするのにSJISとか書く人は思う存分はまれば<br>
いいと思うので、まあいいんじゃないでしょうか。</p>
<p>なんですが、Unix localeとか出てくるとちょっとまずいかもという<br>
気はします。<br>
なんかデフォルトの日本語localeがSJISなUnixがあったような気が<br>
するんですが、なんだったかしら。AIXあたり?<br>
そしてそいつのlocale名は何でその実体はなんだったのかしら...</p>
<a name="それでは"></a>
<h2 >それでは。<a href="#それでは" class="wiki-anchor">¶</a></h2>
<p>U.Nakamura <a href="mailto:usa@garbagecollect.jp" class="email">usa@garbagecollect.jp</a></p>
<p>=end</p>
Ruby master - Feature #4280: SJIS should be an alias of Windows-31J, not of Shift_JIS
https://redmine.ruby-lang.org/issues/4280?journal_id=15249
2011-01-14T18:01:49Z
naruse (Yui NARUSE)
naruse@airemix.jp
<ul></ul><p>=begin<br>
2011年1月14日17:29 U.Nakamura <a href="mailto:usa@garbagecollect.jp" class="email">usa@garbagecollect.jp</a>:</p>
<blockquote>
<p>こんにちは、なかむら(う)です。</p>
<p>In message "<a href="https://blade.ruby-lang.org/ruby-dev/43033">[ruby-dev:43033]</a> Re: [Ruby 1.9-Feature#4280] SJIS should be an alias of Windows-31J, not of Shift_JIS"<br>
on Jan.14,2011 17:10:00, <a href="mailto:kosaki.motohiro@gmail.com" class="email">kosaki.motohiro@gmail.com</a> wrote:</p>
<blockquote>
<p>実は全然思い出せないんですが、SJISはUnix localeでの名前ではなかったですかね。<br>
個人的にはSJISは統一見解がないから使うなとか言いたいんですがそうもいかない<br>
んでしょうね。<br>
歴史的経緯を含む文字コードは何がやっかいかというと、言語の文字コードの規定と<br>
より下位レイヤーのソフト(データベースソフトとか)での文字コードの規定に不一致が<br>
あったときに困るわけで、Rubyの都合だけで決めていいんだろうかというもやもや感と、<br>
イマドキSJISは理解するけどShift_JIS, CP932を理解しないデータベースなんて生き<br>
残っているのだろうかという漠然とした疑問が頭の中で回っていたりします。</p>
<p>どうなんでしょうねぇ。もうちょっと考えます</p>
</blockquote>
<p>真面目なプログラムはSJISとかいうどう考えてもヤバい名前は使わ<br>
ないと思うんですよね。<br>
データベースアクセスするのにSJISとか書く人は思う存分はまれば<br>
いいと思うので、まあいいんじゃないでしょうか。</p>
<p>なんですが、Unix localeとか出てくるとちょっとまずいかもという<br>
気はします。<br>
なんかデフォルトの日本語localeがSJISなUnixがあったような気が<br>
するんですが、なんだったかしら。AIXあたり?<br>
そしてそいつのlocale名は何でその実体はなんだったのかしら...</p>
</blockquote>
<p><a href="http://home.m05.itscom.net/numa/cde/sjis-euc/sjis.html" class="external">http://home.m05.itscom.net/numa/cde/sjis-euc/sjis.html</a><br>
Unixだと例えばこんな。</p>
<p>しかし、Unicodeとの対応がどんなもんかはまたよくわからんすな。</p>
<p>--<br>
NARUSE, Yui<br>
<a href="mailto:naruse@airemix.jp" class="email">naruse@airemix.jp</a></p>
<p>=end</p>
Ruby master - Feature #4280: SJIS should be an alias of Windows-31J, not of Shift_JIS
https://redmine.ruby-lang.org/issues/4280?journal_id=15250
2011-01-14T18:37:11Z
kosaki (Motohiro KOSAKI)
kosaki.motohiro@gmail.com
<ul></ul><p>=begin</p>
<blockquote>
<p>真面目なプログラムはSJISとかいうどう考えてもヤバい名前は使わ<br>
ないと思うんですよね。<br>
データベースアクセスするのにSJISとか書く人は思う存分はまれば<br>
いいと思うので、まあいいんじゃないでしょうか。</p>
<p>なんですが、Unix localeとか出てくるとちょっとまずいかもという<br>
気はします。<br>
なんかデフォルトの日本語localeがSJISなUnixがあったような気が<br>
するんですが、なんだったかしら。AIXあたり?<br>
そしてそいつのlocale名は何でその実体はなんだったのかしら...</p>
</blockquote>
<p>ロケール名はわかりませんでしたが、</p>
<p><a href="https://www-304.ibm.com/support/docview.wss?uid=std383ebe99c4d8d16e7492574d600087fe7" class="external">https://www-304.ibm.com/support/docview.wss?uid=std383ebe99c4d8d16e7492574d600087fe7</a><br>
<a href="http://publibn.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/aixbman/codebook/jp_codebook.pdf" class="external">http://publibn.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/aixbman/codebook/jp_codebook.pdf</a></p>
<p>を見ると実体はIBM943みたいです。</p>
<p>=end</p>
Ruby master - Feature #4280: SJIS should be an alias of Windows-31J, not of Shift_JIS
https://redmine.ruby-lang.org/issues/4280?journal_id=15264
2011-01-16T06:19:27Z
naruse (Yui NARUSE)
naruse@airemix.jp
<ul></ul><p>=begin<br>
(2011/01/14 19:04), SATOH Fumiyasu wrote:</p>
<blockquote>
<p>At Fri, 14 Jan 2011 17:29:53 +0900,<br>
U.Nakamura wrote:</p>
<blockquote>
<p>なんですが、Unix localeとか出てくるとちょっとまずいかもという<br>
気はします。<br>
なんかデフォルトの日本語localeがSJISなUnixがあったような気が<br>
するんですが、なんだったかしら。AIXあたり?<br>
そしてそいつのlocale名は何でその実体はなんだったのかしら...</p>
</blockquote>
<p>AIX の日本語の既定 locale の名前は Ja_JP で Shift_JIS でも<br>
CP932 でも CP943 でもない Shift_JIS の亜種らしいです。<br>
ほかに Ja_JP.IBM-943、ja_JP.IBM-932 とかがあります。<br>
ja_JP.SJIS はありません(と記憶している)。</p>
</blockquote>
<p>AIX では「AIX 5L 日本語コード一覧表(SC88-0427) 」を読むに、</p>
<ul>
<li>「SJIS」はない</li>
<li>AIX 4.3.2 以前は IBM932、以降は IBM943</li>
<li>文字集合はマイクロソフト標準キャラクタセットと同一</li>
<li>IBM943 は 0x5C == U+005C</li>
<li>Unicode への変換は Shift_JIS 風 (0x5C 以外)<br>
<a href="http://publibn.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/aixbman/codebook/jp_codebook.pdf" class="external">http://publibn.boulder.ibm.com/doc_link/Ja_JP/a_doc_lib/aixbman/codebook/jp_codebook.pdf</a>
</li>
</ul>
<p>しかし、以下のような話もあり、混乱もある模様。<br>
<a href="http://www-01.ibm.com/support/docview.wss?uid=std3c2d180a83715c3a149256ec400280bf4" class="external">http://www-01.ibm.com/support/docview.wss?uid=std3c2d180a83715c3a149256ec400280bf4</a><br>
<a href="http://www.hi-matic.org/diary/?20090514" class="external">http://www.hi-matic.org/diary/?20090514</a></p>
<blockquote>
<p>Solaris の Windows 同等の locale 名は ja_JP.PCK です。<br>
ja_JP.SJIS はありません。</p>
</blockquote>
<p>そういえば PCK は nkf でサポート希望来ましたな。<br>
ruby でも alias 追加するか、replica にするか。</p>
<a name="でこいつは何者かというと"></a>
<h2 >で、こいつは何者かというと、<a href="#でこいつは何者かというと" class="wiki-anchor">¶</a></h2>
<h2>PC 漢字コード<br>
PC 漢字コード (以降、PCK とします) は、一般に「シフト JIS (あるいは MS 漢字) コード」と呼ばれ、<br>
Microsoft が Windows 3.1 で規定したマイクロソフト標準キャラクタセットと同等の文字集合および<br>
エンコーディングを提供するものです。ja_JP.PCK ロケールで日本語を表現する文字コード体系として<br>
使われています。PCK に関する詳細は、PCK(5) マニュアルページを参照してください。」<br>
<a href="http://download.oracle.com/docs/cd/E19253-01/819-0364/japan.utility-10006/index.html" class="external">http://download.oracle.com/docs/cd/E19253-01/819-0364/japan.utility-10006/index.html</a>
</h2>
<p>とあり、後ろに付いてる変換規則も見ると、<br>
「PC 漢字コードと UTF-8 の変換は、内部で一旦変換元のコードセットから日本語 EUC に変換し、<br>
そこから目的のコードセットへ変換します。」<br>
とある。</p>
<p>じゃあ、PCK と 日本語 EUC の変換はと見ると、<br>
日本語 EUC と PCK の文字コード変換規則は『TOG 日本ベンダ協議会』の日本語 EUC・シフト JIS<br>
コード変換仕様』に基づいています。」<br>
とあるので、これですね。<br>
<a href="http://home.m05.itscom.net/numa/cde/sjis-euc/sjis-euc.html" class="external">http://home.m05.itscom.net/numa/cde/sjis-euc/sjis-euc.html</a></p>
<p>で、この日本語 EUC と Unicode の変換規則は何かというと、どうも eucJP-ascii なようですね。<br>
「JIS X 0221 式の変換 (ASCII と併用する場合)」<br>
<a href="http://home.m05.itscom.net/numa/cde/ucs-conv/appendix.html" class="external">http://home.m05.itscom.net/numa/cde/ucs-conv/appendix.html</a></p>
<p><a href="http://download.oracle.com/docs/cd/E19253-01/819-0606/x-2chn0/index.html" class="external">http://download.oracle.com/docs/cd/E19253-01/819-0606/x-2chn0/index.html</a><br>
<a href="http://download.oracle.com/docs/cd/E19253-01/819-0606/appb-pckwarn-1/index.html" class="external">http://download.oracle.com/docs/cd/E19253-01/819-0606/appb-pckwarn-1/index.html</a></p>
<blockquote>
<p>日立の HI-UX (HP-UX の亜種) に ja_JP.SJIS という locale が<br>
ありますが、これが Shift_JIS か亜種 (CP932?) であるかは覚えていない…。<br>
HP-UX にも ja_JP.SJIS はあったかなぁ?</p>
</blockquote>
<p>HP-UX は SJIS/SJISMS で分けているように見えますね。<br>
<a href="http://docs.hp.com/ja/5991-1165/ch02s06.html" class="external">http://docs.hp.com/ja/5991-1165/ch02s06.html</a></p>
<p>総じて見ると、「ここで,SJISとはMicrosoft が Windows 3.1 で規定した<br>
「マイクロソフト標準 キャラクタセット」のこととする.」って感じみたいですな。<br>
<a href="http://home.m05.itscom.net/numa/cde/sjis-euc/sjis-euc.html" class="external">http://home.m05.itscom.net/numa/cde/sjis-euc/sjis-euc.html</a></p>
<p>ただ、変換表はどうかというと、eucJP-ascii 経由っぽい雰囲気も。</p>
<p>--<br>
NARUSE, Yui <a href="mailto:naruse@airemix.jp" class="email">naruse@airemix.jp</a></p>
<p>=end</p>
Ruby master - Feature #4280: SJIS should be an alias of Windows-31J, not of Shift_JIS
https://redmine.ruby-lang.org/issues/4280?journal_id=15291
2011-01-17T23:43:22Z
usa (Usaku NAKAMURA)
usa@garbagecollect.jp
<ul></ul><p>=begin<br>
こんにちは、なかむら(う)です。</p>
<p>In message "<a href="https://blade.ruby-lang.org/ruby-dev/43056">[ruby-dev:43056]</a> Re: [Ruby 1.9-Feature#4280] SJIS should be an alias of Windows-31J, not of Shift_JIS"<br>
on Jan.17,2011 20:01:21, <a href="mailto:kosaki.motohiro@jp.fujitsu.com" class="email">kosaki.motohiro@jp.fujitsu.com</a> wrote:</p>
<blockquote>
<p>1点気になるのは非互換なんですが、「ぎゃっ」と声がするかどうかで確認する<br>
作戦だという理解でいいのでしょうか?</p>
</blockquote>
<p>自分でSJISを指定してる人は、最初から書いてるように、単にうか<br>
つな人なので勝手に叫べ、という感じです。</p>
<p>で、自分でそう書いてないのにSJISとして取り扱われてる人なんて<br>
いるわけないよねーははは、と思っていたわけなんですが、Unixの<br>
localeが*.SJISの場合のみそういうことが起きるということに小崎<br>
さんの指摘で気付いたので確認してたという感じです。</p>
<p>できれば「ぎゃっ」と叫ばせる前に確認したいわけですが、現実問<br>
題としてはWindowsと互換でない前提でSJISというlocaleをわざわざ<br>
使ってる奇特な人なんてほとんどいないと想像できるので、見切り<br>
をつけてやってみてはどうか、という気分に傾いてはいます。</p>
<p>いずれにせよ、Ruby M17Nの権威、成瀬さんがどう判断するか、なの<br>
ですが。</p>
<a name="それでは"></a>
<h2 >それでは。<a href="#それでは" class="wiki-anchor">¶</a></h2>
<p>U.Nakamura <a href="mailto:usa@garbagecollect.jp" class="email">usa@garbagecollect.jp</a></p>
<p>=end</p>
Ruby master - Feature #4280: SJIS should be an alias of Windows-31J, not of Shift_JIS
https://redmine.ruby-lang.org/issues/4280?journal_id=16095
2011-03-09T13:58:06Z
naruse (Yui NARUSE)
naruse@airemix.jp
<ul><li><strong>Status</strong> changed from <i>Assigned</i> to <i>Closed</i></li><li><strong>% Done</strong> changed from <i>0</i> to <i>100</i></li></ul><p>=begin<br>
This issue was solved with changeset r31074.<br>
Usaku, thank you for reporting this issue.<br>
Your contribution to Ruby is greatly appreciated.<br>
May Ruby be with you.</p>
<p>=end</p>