2020/11/13

2004、パパがパパでなくなった日(Windows 10 ver 2004/20H2 の日本語固有のバグ)

これまでちょくちょく触れてきた、Windows 10 ver 2004 と 20H2 の Windows 10 Update History のトップのほう(https://support.microsoft.com/en-us/help/4555932https://support.microsoft.com/en-us/help/4581839) に最近追加された、日本語処理だけに影響する問題について続報。

というか、ナイスな記事タイトル(オヤジギャグ)が思いついたので止められなくて。

"Certain Japanese half-width Katakana and full-width Katakana characters that have a consonant mark aren’t interpreted as the same character(濁点・半濁点を含む半角カナと全角カナを同じ文字として解釈しない. When you use the CompareStringEx() function with the NORM_IGNOREWIDTH flag to compare them, these characters are evaluated as different because of an issue in the sorting rule. This issue affects all the updates starting on October 29, 2020 for Windows 10, version 20H2."(2004 のほうは starting on June 9, 2020 for Windows 10, version 2004、つまりどちらも最初から)

Access や Excel で実害が出てる模様。

Windows 10 バージョン 2004 (20H1) / 20H2 上で 半角カナのフォームを含んだ Access ファイルでエラーが発生する(こちらは 8 月に公開された情報、10 月に更新)
https://social.msdn.microsoft.com/Forums/ja-JP/4e6223e2-34d0-4a5f-bb61-109bc28040b6/windows-10-1249612540124721251912531-2004-20h1-20h2-1997812391?forum=officesupportteamja

Windows 10 バージョン 2004 (20H1) / 20H2 で VBA 関数 StrComp() で全角カナと半角カナが一致判定されない(こちらは 11/12 に公開された情報)
https://social.msdn.microsoft.com/Forums/ja-JP/bd9d55e4-1f73-4a25-a9a3-1ff105d5b40c/windows-10-1249612540124721251912531-2004-20h1-20h2-12391-vba-3830625968?forum=officesupportteamja

Windows Script Host で簡単な再現デモなど。

StrComp("デモ", "デモ", vbTextCompare) Windows 10 ver 1909 以前(Windows 8.1 以前も)で実行すると...

0 を返す(テキスト比較で同じ)。仕様↓どおり。

StrComp function
https://docs.microsoft.com/ja-jp/office/vba/language/reference/user-interface-help/strcomp-function

ところが、Windows 10 ver 2004/20H2 で実行すると...


-1 を返すStrComp("デモ", "デモ", vbTextCompare) なら 1 を返す。濁点、半濁点の入った全角/半角カタカナを含むときに影響。

回避策の 1 つ、OS レベルで NLS のバージョン 6.3 → 6.2 にダウングレードをしてみると 、とりあえず以前の挙動に戻る(父帰る) 。けど、OS の他の機能に何か影響があるかもしれないし、ないかもしれない(何かソート順変わるらしいです)。

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Nls\Sorting\Versions /ve /d 0006020F /f

ver 2004/20H2 の既定に戻すには... 

REG ADD HKLM\SYSTEM\CurrentControlSet\Control\Nls\Sorting\Versions /ve /d 00060305 /f

個人では大して問題にならない問題だと思いますが、企業さんは要注意。Access アプリや Excel VBA など、回避方法(コードの修正や NLS のバージョンダウングレードなど)は Office サポート チームの情報にありますが、修正しきれないほどのアプリを抱えている企業さんは、ver 2004/20H2 をまるごとスキップすることを検討するという判断もありかも(ver 2004 が出て半年たって、続々問題が明らかになることを考えると)。半角/全角混在していないなら問題にならないと思いますが... 

関係ないけど、Active Directory や MySQL のハハババ問題が懐かしい。

12/9 追記)この回避策が大本にも追記された。2020-11 C より前の時点でこの設定をして、値を誤ると、起動できなくなる問題があったらしい。

"Updated 12/8/20:

  1. Open the Command Prompt window (cmd.exe) with elevated privileges.
  2. Run “reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Nls\Sorting\Versions /ve /d 0006020F /f”
  3. Restart the computer or processes to see the full effect.

Important If you have not installed KB4586853 or later on the computer, setting an invalid value in this registry might prevent the computer from starting up.

"

0 件のコメント:

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。