この記事は、.NET Framework 4.x アプリケーションで日本語の文字列を比較する際に発生する問題の解決を支援します。
適用対象: Windows 10 Version 2004、Windows 10 Version 20H2、Windows 10 Version 21H1、Windows 10 version 21H2、Windows 10 Version 22H2
現象
濁点や半濁点が付いた日本語の半角および全角カタカナ文字とひらがな文字が、同じ文字として解釈されません。 CompareInfo.IndexOf
メソッドを使用し、IgnoreKanaType
または IgnoreWidth
オプションを CompareOptions
に設定して比較を行うと、並べ替え規則の問題により、これらの文字は異なる文字として評価されます。
原因
Version 2004 以降、Windows 10 では、各国語サポート (NLS) のバージョンを 6.3 に更新し、アラビア語とヘブライ語のサポートを追加しました。 この追加によって NLS を使用する日本語文字列比較の並べ替え規則が影響を受け、比較を行うと異なる結果が生成されてしまいます。
回避策
警告
レジストリを誤って変更すると、深刻な問題が発生することがあります。 これらの問題により、オペレーティング システムの再インストールが必要になったり、マシンが起動しなくなったりする可能性があります。 マイクロソフトは、このような問題の解決に関して、一切責任を負わないものとします。 変更する前に、問題の発生に備えて復元用にレジストリのバックアップを作成してください。 レジストリの変更はユーザー自身の責任において行ってください。
回避策 1
NLS の並べ替え規則をバージョン 6.2 に戻します。 このバージョンは、Windows 10 Version 1909 以前のバージョンで使用します。 システム間でデータを共有する必要がある場合は、回避策を一貫して適用することを検討してください。 この回避策を使用する場合は、十分なテストと評価を行って、複数のシステムで異なる並べ替え規則のバージョンが原因で発生する問題を軽減してください。
この回避策を使用するには、次の手順を実行します。
管理者としてコマンド プロンプト ウィンドウ (cmd.exe) を開きます。
次のコマンドを実行します。
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Sorting\Versions /ve /d 0006020F /f
コンピューターまたはプロセスを再起動して、完全な効果を確認します。
重要
KB4586853 以降の更新プログラムをコンピューターにインストールしていない場合、このレジストリ エントリに無効な値を設定すると、コンピューターが起動しなくなる可能性があります。
回避策 2
NLS の並べ替え規則をバージョン 6.4 に設定します。 このバージョンは、Windows 11 で使用します。 これを行うには、KB5014023 以降の更新プログラムを適用し、バージョンを 1741 以降にアップグレードする必要があります。 この場合、Version 22H2 が既に適用されており、更新する必要はありません。
Windows 10 Version 2004、20H2、21H1、21H2 に KB5014023 以降の更新プログラムを適用します。
管理者としてコマンド プロンプト ウィンドウ (cmd.exe) を開きます。
次のコマンドを実行します。
reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Sorting\Versions /ve /d 00060403 /f
コンピューターまたはプロセスを再起動して、完全な効果を確認します。