パスワードを忘れた? アカウント作成
605408 journal

umqの日記: NLS って難しい(6) 1

日記 by umq

# すでに NLS とは違う話題になってるような気もするが……

Mlang.dll の関数を使えば 51932 へのコンバートが可能ではないだろうか,という話の続き。

ConvertINetString() を使って変換可能かどうか,について判別する IsConvertINetStringAvailable() という関数がある。
これを使って変換可能性を調べた。

調査に使用したのは以下の各コードページ。

  • 437: OEM - United States
  • 932: ANSI/OEM - Japanese Shift-JIS
  • 1252: ANSI - Latin I
  • 20932: JIS X 0208-1990 & 0212-1990
  • 50220: 日本語 (JIS)
  • 50221: 日本語 (JIS 1 バイト カタカナ可)
  • 50221: 日本語 (JIS 1 バイト カタカナ可 - SO/SI)
  • 50932: 日本語 (自動判別)
  • 65000: UTF-7
  • 65001: UTF-8

結果,わかったことは以下の通り

  • 同一コードページ同士の変換(?)は常に可能
  • UTF-7(65000), UTF-8(65001) と任意のコードページの相互変換は常に可能
  • 437 と 20932 は相互変換可能(!)
  • 932 と 20932 は変換不可(!)
  • 932 と 50220, 50221, 50222, 50932, 51932 の各コードページは相互変換可能
  • 20932, 50220, 50221, 50222, 50932, 51932 の任意の異なる2つの組み合わせでは、変換不可

……なかなか興味深い結果だと思う

[ひとつまえ]

この議論は賞味期限が切れたので、アーカイブ化されています。 新たにコメントを付けることはできません。
  • by hsgw (14585) on 2004年08月25日 15時24分 (#611068)
    さらにわかったこと:
    CP_OEMCP(1) や CP_ACP(0) はサポートされない。呼び出し側でこれらが具体的にどのページ番号にマップされているかを解決しておく必要がある。
typodupeerror

長期的な見通しやビジョンはあえて持たないようにしてる -- Linus Torvalds

読み込み中...