[[Open棟梁Project>http://opentouryo.osscons.jp/]] - [[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]
「[[マイクロソフト系技術情報 Wiki>http://techinfoofmicrosofttech.osscons.jp/]]」は、「[[Open棟梁Project>https://github.com/OpenTouryoProject/]]」,「[[OSSコンソーシアム .NET開発基盤部会>https://www.osscons.jp/dotNetDevelopmentInfrastructure/]]」によって運営されています。

-[[戻る>JIS文字・漢字コード]]

* 目次 [#o0abeb28]
#contents

*概要 [#idd68f6e]
JIS2004(JIS X 0213:2004)

JIS2004はJIS X 0208:1997(いわゆるJIS97)を拡張し、~
-JIS2004はJIS X 0208:1997(いわゆるJIS97)を拡張し、~
JIS第三水準文字・JIS第四水準文字を含む4344文字を追加した文字コード。
-Windows Vista / Windows Server 2008(以下、Vista/2008と略す)でサポートされた。

**サロゲート ペア文字、結合文字 [#a6b7fa89]
追加されたJIS2004拡張文字のセット、
907文字のうち304文字がサロゲート ペア文字である。
*問題 [#n39a6f0c]
JIS2004の導入の問題には以下のものがあるが、現存するシステムの殆どは、~
JIS2004の導入前からキャラクタ セット、文字コードについて同様の問題を持っている。~
(例えば、JIS X 0208 → JIS X 0212時の補助漢字の追加、エンコーディングの問題など)。
-このため、JIS2004以降に、新たにJIS漢字が追加された場合も同様の方法で対処することができると考える。
-また、JIS2004導入に於ける特段新しい注意点(観点)は朱書きにしてある。

UTF-8、UTF-16で表現可能な
-サロゲート ペア文字は4バイト
-結合文字は4バイト以上
※ エンコードしないで入出力する場合は、連携先で問題点1、2を解決すれば良い。~
JIS2004導入に於ける特段新しい注意点(観点)は問題点3の一点だけである。

で表現される。
**拡張文字セットの追加 [#j572ae21]
JIS2004拡張文字のセットが907文字(うち304文字がサロゲート ペア文字)、追加された。~
Vista/2008以外の現行OSはJIS2004の拡張文字セットに未対応(拡張文字セットは、現状、Vista/2008の機種依存文字となっている)。

-問題点1:フォントが無い場合、JIS2004拡張文字が表示されない。
-問題点2:マシンの[[IME]]が未対応の場合、JIS2004拡張文字を入力できない。
-問題点3:サロゲート ペア文字・結合文字は、Lengthチェックなどに影響を与える。

[参考]:マイクロソフト サポート オンライン > Windows Vista で拡張された文字について~
http://support.microsoft.com/kb/927488/ja

**標準フォント デザインの変更 [#q7c296ac]
字形変更文字(標準フォントデザインが変更)が168字。
-問題点4:マシンによっては、字形変更文字の表示や印刷が異なる。

**エンコーディングの問題 [#g58fb54a]
エンコーディング処理に問題がある可能性がある。
-問題点5:他の環境へ(Unicodeからそれ以外の文字コードに)エンコード出力できない可能性。
-問題点6:他の環境から(Unicodeからそれ以外の文字コードに)エンコード入力できない可能性。

*対応方法 [#c14b6a2e]
**JIS2004に対応させる [#q9c80070]
-以下は、WindowsOSでの対応方法。
-Mac、UNIX、Linux、その他携帯端末などの他機種についても同様に調査が必要。
-ただし、文字の表示が不要なサーバOSについては調査不要(エンコーディングの問題が起きない場合)。

***JIS2004 対応の日本語フォントのインストール [#r6180bc8]
Windows XP / Windows Server 2003(以下、XP/2003と略す)でも、~
パッチさえ当てれば、JIS2004に対応した日本語フォントを利用可能になる。

-Windowsホーム > 製品情報 > Windows Vista~
JIS X 0213 : 2004 対応と新日本語フォント「メイリオ」について~
XP / 2003向けJIS2004対応 MSゴシック & MS明朝 フォントパッケージについて~
http://www.microsoft.com/japan/windows/products/windowsvista/jp_font/jis04/default.mspx

-マイクロソフト > ダウンロード センター > XP向けClearType対応日本語フォント~
http://www.microsoft.com/downloads/details.aspx?FamilyID=f7d758d2-46ff-4c55-92f2-69ae834ac928&displaylang=ja&Hash=9QmPTiwvbGtcGoQvIf2UX3ueDzsnIoo0qyWFQqrVEK1mApNcC%2fMyUiBP8qcbIvjT77dGwr2K2hyt1m0wXtGqDA%3d%3d

フォントをインストールしたら、フォントを使用できるアプリケーションで確認する。~
(フォントを使用のに設定が必要なアプリケーションもあるし、フォントを使用できないアプリケーションもある)

***JIS2004 対応の[[IME]]のインストール [#d78fb4f0]
-Office2007(に同梱されるIME2007)をインストールすることで、XP/2003でもJIS2004の拡張文字セットの文字入力が可能になる。~
Office2007はインターネットから、試用版(無料で60日試用可能)がダウンロードできる。

-ちなみに、IME2007のみをインストールした状態では、フォントがないため、IMEが入力したデータを参照することができないと言う現象が発生する。~
この場合、前述の手順に従い、JIS2004に対応した日本語フォントをインストールすることで、この問題を解決する。

**JIS90の設定に戻す [#ye662509]
-Vista/2008では、JIS2004に対応した日本語フォントを搭載している。一部の文字(168字)で標準フォント デザインが変更されるため、~
人名、地名など字形に敏感なシステムには影響が出る可能性がある(この影響とは、顧客要件に因るところが大きい)。

--[参考]:Windowsホーム > 製品情報 > Windows Vista > JIS2004 対応と新日本語フォント「メイリオ」について~
http://www.microsoft.com/japan/windows/products/windowsvista/jp_font/default.mspx
--[参考]:CyberLibrarian(図書館員のコンピュータ基礎講座参考資料)> 参考資料 > JIS2004制定時の変更点 > 印刷標準字体に変更したもの(168字)~
http://www.asahi-net.or.jp/~ax2s-kmtn/ref/jis2000-2004.html

-これを問題と捉えるならば、Vista/2008のフォント、IMEをJIS90に対応させる必要がある。また、このような問題は、画面上の表示だけでなく、帳票印刷(プリンタ)なども含む。

--[参考]:マイクロソフト サポート オンライン > フォントなどのJIS2004文字セットをサポートするドキュメントをVista/2008で印刷すると、~
デバイス フォントを使用するようにプリンタが構成されていてもドキュメントがTrueTypeフォントで印刷されることがある。~
http://support.microsoft.com/kb/931478/ja

***日本語フォントをJIS90 対応のフォントに変更 [#u1818c73]
Vista/2008で2000/XP互換フォントを利用する場合、2000/XPと同じデザインのJIS90互換MSゴシック・明朝フォントがダウンロード提供されているのでこれをインストールする。

[参考]:Windowsホーム > 製品情報 > Windows Vista~
JIS X 0213:2004 対応と新日本語フォント「メイリオ」について~
Vista / 2008向けJIS90互換MSゴシック・明朝フォントパッケージについて~
http://www.microsoft.com/japan/windows/products/windowsvista/jp_font/jis90/default.mspx

Vista/2008でJIS90互換MSゴシック・明朝フォントをインストールする前、インストールした後で、「鰯」などの文字のフォント デザインが以下のように変更される。

#ref(jis90_font.png,left,nowrap,日本語フォントをJIS90 対応のフォントに変更)

***Vista/2008の[[IME]]をJIS90に設定 [#sd0219a6]
Vista/2008の[[IME]]設定を変更することでJIS2004の拡張文字セットの入力を禁止することができる。

Vista/2008向け JIS90 互換 MS ゴシック・明朝フォントパッケージのインストール後、日本語入力[[IME]]での変換対象を「JIS90」に限定する設定をすることで、拡張文字セット入力を不可能にすることができる。

言語バーにある、プロパティから、[Microsoft [[IME]]のプロパティ]ダイアログを起動、[変換]タブの[変換文字制限]ボタンを押下し、[Microsoft [[IME]] 変換文字制限]ダイアログで[JISX0208文字で構成された単語/文字のみ変換候補に表示する]チェック ボタンをオンにして、[OK]ボタンを2回押下して元に戻る。

#ref(jis90_ime_config1.png,left,nowrap,日本語フォントをJIS90 対応のフォントに変更(Vista/2008))

上記のJIS2004の拡張文字セット入力を不可能にする設定を”する前”と、”した後”の比較を以下に示す。確かに、JIS2004の拡張文字セットを入力できなくなっている。

#ref(jis90_ime_result1.png,left,nowrap,JIS90に対応した[[IME]]設定に変更した結果(Vista/2008))

[参考]:マイクロソフト サポート オンライン > Vista/2008で[[IME]]の変換候補に表示する文字を制限する方法~
http://support.microsoft.com/kb/934715/ja

***JIS90 対応の[[IME]]のインストール [#sd0219a6]
また、XP/2003でOffice2007(に同梱されるIME2007)をインストールして、JIS2004の拡張文字セットの文字入力が可能にした場合も、[[IME]]設定を変更することでJIS2004の拡張文字セットの入力を禁止することができる。

言語バーにある、プロパティから、[Microsoft Office [[IME]] 2007のプロパティ]ダイアログを起動、[変換]タブの[詳細設定]ボタンを押下し、[変換]ダイアログで[JISX0208文字で構成された単語/文字のみ変換候補に表示する]オプション ボタンをオンにして、[OK]ボタンを2回押下して元に戻る。

#ref(jis90_ime_config2.png,left,nowrap,日本語フォントをJIS90 対応のフォントに変更(XP/2003))

上記のJIS2004の拡張文字セット入力を不可能にする設定をする前と、した後の比較を以下に示す。確かに、JIS2004の拡張文字セットを入力できなくなっている。

#ref(jis90_ime_result2.png,left,nowrap,JIS90に対応したIME設定に変更した結果(XP/2003))

*サロゲート ペア文字、結合文字 [#a6b7fa89]
-UTF-8、UTF-16で表現可能
-Shift-JIS、EUC-JP、Big5などでは表現できない

**サロゲート ペア文字 [#nd1b2395]
追加されたJIS2004拡張文字のセット、907文字のうち304文字がサロゲート ペア文字である。サロゲート ペア文字のことを、サロゲートコード、補助文字とも呼ぶ。

サロゲート ペア文字は4バイトで表現される。

|U+2000B:𠀋|U+2123D:𡈽|U+2131B:𡌛|U+2146E:𡑮|U+218BD:𡢽|U+20B9F:𠮟|U+216B4:𡚴|
|U+21E34:𡸴|U+231C4:𣇄|U+235C4:𣗄|U+2373F:𣜿|U+23763:𣝣|U+23CFE:𣳾|U+247F1:𤟱|
|U+2548E:𥒎|U+2550E:𥔎|U+25771:𥝱|U+259C4:𥧄|U+25DA1:𥶡|U+26AFF:𦫿|U+26E40:𦹀|
|U+270F4:𧃴|U+27684:𧚄|U+28277:𨉷|U+283CD:𨏍|U+2A190:𪆐|U+20089:𠂉|U+200A2:𠂢|
|U+200A4:𠂤|U+201A2:𠆢|U+20213:𠈓|U+2032B:𠌫|U+20381:𠎁|U+20371:𠍱|U+203F9:𠏹|
|U+2044A:𠑊|U+20509:𠔉|U+205D6:𠗖|U+20628:𠘨|U+2074F:𠝏|U+20807:𠠇|U+2083A:𠠺|
|U+208B9:𠢹|U+2097C:𠥼|U+2099D:𠦝|U+20AD3:𠫓|U+20B1D:𠬝|U+20D45:𠵅|U+20DE1:𠷡|
|U+20E95:𠺕|U+20E6D𠹭 |U+20E64:𠹤|U+20F5F:𠽟|U+21201:𡈁|U+21255:𡉕|U+2127B:𡉻|
|U+21274:𡉴|U+212E4:𡋤|U+212D7:𡋗|U+212FD:𡋽|U+21336:𡌶|U+21344:𡍄|U+213C4:𡏄|
|U+2146D:𡑭|U+215D7:𡗗|U+26C29:𦰩|U+21647:𡙇|U+21706:𡜆|U+21742:𡝂|U+219C3:𡧃|
|U+21C56:𡱖|U+21D2D:𡴭|U+21D45:𡵅|U+21D78:𡵸|U+21D62:𡵢|U+21DA1:𡶡|U+21D9C:𡶜|
|U+21D92:𡶒|U+21DB7:𡶷|U+21DE0:𡷠|U+21E33:𡸳|U+21F1E:𡼞|U+21F76:𡽶|U+21FFA:𡿺|
|U+2217B:𢅻|U+2231E:𢌞|U+223AD:𢎭|U+226F3:𢛳|U+2285B:𢡛|U+228AB:𢢫|U+2298F:𢦏|
|U+22AB8:𢪸|U+22B4F:𢭏|U+22B50:𢭐|U+22B46:𢭆|U+22C1D:𢰝|U+22BA6:𢮦|U+22C24:𢰤|
|U+22DE1:𢷡|U+231C3:𣇃|U+231F5:𣇵|U+231B6:𣆶|U+23372:𣍲|U+233D3:𣏓|U+233D2:𣏒|
|U+233D0:𣏐|U+233E4:𣏤|U+233D5:𣏕|U+233DA:𣏚|U+233DF:𣏟|U+2344A:𣑊|U+23451:𣑑|
|U+2344B:𣑋|U+23465:𣑥|U+234E4:𣓤|U+2355A:𣕚|U+23594:𣖔|U+23639:𣘹|U+23647:𣙇|
|U+23638:𣘸|U+2363A:𣘺|U+2371C:𣜜|U+2370C:𣜌|U+23764:𣝤|U+237FF:𣟿|U+237E7:𣟧|
|U+23824:𣠤|U+2383D:𣠽|U+23A98:𣪘|U+23C7F:𣱿|U+23D00:𣴀|U+23D40:𣵀|U+23DFA:𣷺|
|U+23DF9:𣷹|U+23DD3:𣷓|U+23F7E:𣽾|U+24096:𤂖|U+24103:𤄃|U+241C6:𤇆|U+241FE:𤇾|
|U+243BC:𤎼|U+24629:𤘩|U+246A5:𤚥|U+24896:𤢖|U+24A4D:𤩍|U+24B56:𤭖|U+24B6F:𤭯|
|U+24C16:𤰖|U+24D14:𤴔|U+24E0E:𤸎|U+24E37:𤸷|U+24E6A:𤹪|U+24E8B:𤺋|U+2504A:𥁊|
|U+25055:𥁕|U+25122:𥄢|U+251A9:𥆩|U+251E5:𥇥|U+251CD:𥇍|U+2521E:𥈞|U+2524C:𥉌|
|U+2542E:𥐮|U+254D9:𥓙|U+255A7:𥖧|U+257A9:𥞩|U+257B4:𥞴|U+259D4:𥧔|U+25AE4:𥫤|
|U+25AE3:𥫣|U+25AF1:𥫱|U+25BB2:𥮲|U+25C4B:𥱋|U+25C64:𥱤|U+25E2E:𥸮|U+25E56:𥹖|
|U+25E65:𥹥|U+25E62:𥹢|U+25ED8:𥻘|U+25EC2:𥻂|U+25EE8:𥻨|U+25F23:𥼣|U+25F5C:𥽜|
|U+25FE0:𥿠|U+25FD4:𥿔|U+2600C:𦀌|U+25FFB:𥿻|U+26017:𦀗|U+26060:𦁠|U+260ED:𦃭|
|U+26270:𦉰|U+26286:𦊆|U+2634C:𦍌|U+23D0E:𣴎|U+26402:𦐂|U+2667E:𦙾|U+266B0:𦚰|
|U+2671D:𦜝|U+268DD:𦣝|U+268EA:𦣪|U+26951:𦥑|U+2696F:𦥯|U+269DD:𦧝|U+26A1E:𦨞|
|U+26A58:𦩘|U+26A8C:𦪌|U+26AB7:𦪷|U+26C73:𦱳|U+26CDD:𦳝|U+26E65:𦹥|U+26F94:𦾔|
|U+26FF8:𦿸|U+26FF6:𦿶|U+26FF7:𦿷|U+2710D:𧄍|U+27139:𧄹|U+273DB:𧏛|U+273DA:𧏚|
|U+273FE:𧏾|U+27410:𧐐|U+27449:𧑉|U+27615:𧘕|U+27614:𧘔|U+27631:𧘱|U+27693:𧚓|
|U+2770E:𧜎|U+27723:𧜣|U+27752:𧝒|U+27985:𧦅|U+27A84:𧪄|U+27BB3:𧮳|U+27BBE:𧮾|
|U+27BC7:𧯇|U+27CB8:𧲸|U+27DA0:𧶠|U+27E10:𧸐|U+27FB7:𧾷|U+2808A:𨂊|U+280BB:𨂻|
|U+28282:𨊂|U+282F3:𨋳|U+2840C:𨐌|U+28455:𨑕|U+2856B:𨕫|U+285C8:𨗈|U+285C9:𨗉|
|U+286D7:𨛗|U+286FA:𨛺|U+28949:𨥉|U+28946:𨥆|U+2896B:𨥫|U+28987:𨦇|U+28988:𨦈|
|U+289BA:𨦺|U+289BB:𨦻|U+28A1E:𨨞|U+28A29:𨨩|U+28A71:𨩱|U+28A43:𨩃|U+28A99:𨪙|
|U+28ACD:𨫍|U+28AE4:𨫤|U+28ADD:𨫝|U+28BC1:𨯁|U+28BEF:𨯯|U+28D10:𨴐|U+28D71:𨵱|
|U+28DFB:𨷻|U+28E1F:𨸟|U+28E36:𨸶|U+28E89:𨺉|U+28EEB:𨻫|U+28F32:𨼲|U+28FF8:𨿸|
|U+292A0:𩊠|U+292B1:𩊱|U+29490:𩒐|U+295CF:𩗏|U+2967F:𩙿|U+296F0:𩛰|U+29719:𩜙|
|U+29750:𩝐|U+298C6:𩣆|U+29A72:𩩲|U+29DDB:𩷛|U+29E3D:𩸽|U+29E15:𩸕|U+29E8A:𩺊|
|U+29E49:𩹉|U+29EC4:𩻄|U+29EE9:𩻩|U+29EDB:𩻛|U+29FCE:𩿎|U+2A02F:𪀯|U+2A01A:𪀚|
|U+2A0F9:𪃹|U+2A082:𪂂|U+22218:𢈘|U+2A38C:𪎌|U+2A437:𪐷|U+2A5F1:𪗱|U+2A602:𪘂|
|U+2A61A:𪘚|U+2A6B2:𪚲||||||


**結合文字 [#j1732c6c]
結合文字のことを、結合済み文字、合成文字、合成済み文字とも呼ぶ。

結合文字は4バイト以上で表現される。

結合文字は、言語バーにある、IMEパッドから、「ふ」+「゚」=「ぷ」と入力することで、入力できる。下記の図は、通常の文字の「ぷ」と、結合文字の「ぷ」を入力したところ。

#ref(CombiningCharacter_Input.png,left,nowrap,結合文字の入力)

また結合文字は、縦書きにすると、正しく結合されないという問題がある。

#ref(CombiningCharacter_VerticalWriting.png,left,nowrap,結合文字の縦書き)

**文字の扱いの違い [#c2107e16]
APIやDBMSの使い方によって、
-1文字として扱えるか
-2バイト毎にバラバラに扱うか

動作が変わる。

以下に一例を示す。

-.NET FrameworkのAPI
--System.Globalization.StringInfoは、1文字と認識する。
--System.Stringは、1文字と認識しない。
***.NET FrameworkのAPI [#k0a9179e]
-System.Globalization.StringInfoは、1文字と認識する。
-System.Stringは、1文字と認識しない。

-SQL Serverの照合順序
--Japanese_90,Japanese_100は、1文字と認識する。
--Japaneseは、1文字と認識しない。
***SQL Serverの照合順序 [#wfcfd4b7]
-Japanese_90,Japanese_100は、1文字と認識する。
-Japaneseは、1文字と認識しない。

-Oracleの部分検索
--LIKECは、1文字と認識する。
--LIKEは、1文字と認識しない。
***Oracleの部分検索 [#s97761b7]
-LIKECは、1文字と認識する。
-LIKEは、1文字と認識しない。

 ※サロゲート ペア文字のことを、サロゲートコード、補助文字とも呼ぶ。
 ※結合文字のことを、結合済み文字、合成文字、合成済み文字とも呼ぶ。
 ※Shift-JIS、EUC-JP、Big5などではサロゲート ペア文字、結合文字を表現できない

**参考 [#df54d477]
*参考 [#df54d477]
-StringInfo クラス (System.Globalization)~
http://msdn.microsoft.com/ja-jp/library/system.globalization.stringinfo.aspx
-SQL Server における JIS2004 対応について寄せられる質問と回答~
http://support.microsoft.com/kb/931785/ja
-LIKE、IN、BETWEEN AND、IS NULL - オラクル・Oracle PL/SQL 入門~
http://www.shift-the-oracle.com/plsql/like-in-between-isnull.html

----
Tags: [[:.NET開発]], [[:国際化対応]], [[:文字コード]]


トップ   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS