のApache Commons LangのドキュメントによるとStringUtils.isNumeric()、文字列「१२३」は数値です。
これはドキュメントの間違いかもしれないと思ったので、テストを実行してステートメントを検証しました。Apache Commonsによると、数値であることがわかりました。
なぜこの文字列は数値なのですか?それらのキャラクターは何を表していますか?
Integer.parseInt("१२३")。
                ⅯⅭしてをMC。
                のApache Commons LangのドキュメントによるとStringUtils.isNumeric()、文字列「१२३」は数値です。
これはドキュメントの間違いかもしれないと思ったので、テストを実行してステートメントを検証しました。Apache Commonsによると、数値であることがわかりました。
なぜこの文字列は数値なのですか?それらのキャラクターは何を表していますか?
Integer.parseInt("१२३")。
                ⅯⅭしてをMC。
                回答:
それは、「CharSequenceにはUnicodeの数字のみが含まれている」ため(リンクされたドキュメントを引用)
すべての文字がtrueを返しますCharacter.isDigit。
数字を含むいくつかのUnicode文字範囲:
- '\ u0030'から '\ u0039'、ISO-LATIN-1桁( '0'から '9')
- '\ u0660'〜 '\ u0669'、アラビア語-インド数字
- '\ u06F0'〜 '\ u06F9'、拡張アラビア語インド数字
- '\ u0966'〜 '\ u096F'、デバナーガリ数字
- '\ uFF10'〜 '\ uFF19'、全角数字
他の多くの文字範囲にも数字が含まれています。
१२३ デーバナーガリー数字です:
Integer.parseInt("222", 2)。
                    亿10 ^ 8を表すChinise があります->これは3の累乗でオーバーフローを引き起こします。数値システムのリスト
                    parseInt数字が必要であり、混乱を招くかもしれませんがisNumeric、この質問のメソッドでは、10進数字文字( General_Category = Decimal_Number)ではなく、より広い範囲の数値文字の代わりに。
                    ०१२३४५६७८९です。
                    Integer.parseInt()、3文字の数値入力文字列の例外をスローする方法があるかどうか尋ねました。
                    シンボル123は、ネパールの言語または使用する他の言語の123と同じであるデバナーガリスクリプトをこのようなヒンディー語、グジャラート、としてなど、そのためであるアパッチ・コモンズするための番号です。
を使用Character#getTypeして、キャラクターの一般的なカテゴリを確認できます。
System.out.println(Character.DECIMAL_DIGIT_NUMBER == Character.getType('१'));これtrueは、「१」が数字であることを示す「証拠」であるを印刷します。
次に、「१」文字のUnicode値を調べます。
System.out.println(Integer.toHexString('१'));
// 967この番号は、デバナーガリ桁の範囲にあります。つまり、\u0966〜\u096Fです。
また試してください:
Character.UnicodeBlock block = Character.UnicodeBlock.of('१');
System.out.println(block.toString());
// DEVANAGARIデバナーガリは:
インドとネパールのアブギダ(アルファベット順)アルファベットです。
「१२३」は「123」(基本的なラテン語のUnicode)です。
読書:
DECIMAL_DIGIT_NUMBERそれらがDEVANAGARIブロック内にあることよりもタイプであることの方が重要です。そのブロックにも数字以外の文字があります。
                    特定の "文字"が持つプロパティを知りたい場合(そしてかなりの数がある場合)、ソースに直接アクセスしてください:Unicode.org。彼らはあなたが知りたいと思うほとんどすべてを示すことができる研究ツールを持っています。
特定のキャラクターのすべてのプロパティを表示したい場合は、以下を試してください。
http://unicode.org/cldr/utility/character.jsp?a=१
または:
「10進数」(つまり、0〜9の数値)として分類されたすべての文字を表示したい場合は、以下を試してください。
http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Numeric_Type=Decimal:](550 
コードポイント-現在/ Unicode 9.0以降)
「10進数以外の数字」として分類されたすべての文字(分数、丸など)を表示するには、次の操作を試してください。
http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Numeric_Type=Numeric:](836 
コードポイント-現在/ Unicode 9.0以降)
「10進数」(つまり、0〜9の数値)として分類されたすべての文字を表示したいが、(。NETが使用する)Unicode 6.0までしか表示しない場合は、以下を試してください。
http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Numeric_Type=Decimal:]%26[:Age=6.0:](420 
コードポイント-変更しないでください)
「10進数」として分類されたすべての文字(つまり、0〜9の数値)を表示したいが、Unicode 6.0(.NETが使用する)まで、およびベース多言語プレーンでのみ/補助文字なし(つまり、コードポイント65535 / U + 0xFFFFを超えるものはありません)、以下を試してください:
http://unicode.org/cldr/utility/list-unicodeset.jsp?a=[:Numeric_Type=Decimal:]%26[:Age=6.0:]%26[:bmp=Yes:](350 
コードポイント- -変更しないでください)
留意点: Unicodeコンソーシアムは、ソフトウェアではなく仕様を作成します。つまり、仕様をできる限り正確に実装するかどうかは、各ソフトウェアベンダー次第です。したがって、HTML、JavaScript、CSS、SQLなどと同様に、プラットフォーム、言語などによって違いがあります。たとえば、Microsoftの.NET Frameworkに、丸で囲んだラテン文字A-Zと   a-zコードポイント0x24B6から0x24E9までのバグがあることを発見しましたchar.IsLetter = true(バグレポートはこちら)。また、TextInfo.ToTitleCase()メソッドを呼び出すときなど、関連する機能で予期しない動作が発生します(バグレポートはこちら)。
uniprops。また、unipropsこの6月にUnicodeがバージョン9.0をリリースしたため、バージョンが1つ遅れているようです。
                    記号「१२३」は実際にはヒンディー語(基本的にはサンスクリット語、つまりDevanagiri)から派生しており、次のように数値を表します。
१ 1を表す
२ 2を表す
そして賢いように