Мне удалось создать имя узла системного предпочтения в приложении Java, работающем в Windows, которое состояло из некоторых китайских символов, а затем просмотрел реестр, чтобы проверить, и обнаружил, что jvm использует некоторую текстовую кодировку для узла имя, которое я вообще не узнал.Какая кодировка использует JVM Oracle для имен узлов предпочтений в Windows?
Все имена узлов с этими типами символов были представлены в виде строк с последовательностью, которая начиналась с «/!» (не включая кавычки), а затем включил ряд символов, которые не включены в алфавит Base64, например $% {^, хотя некоторые из них закончили с дополнениями Base64, такими как = и ==. Таким образом, он не является Base64.
Вот некоторые примеры:
/!}-!=
/!4'6`49<"7l]`:0krpoo(8-}-#^q&8^_6
/!f%>s>o{z5qzj.k"sy78=
Из приведенных выше кодировок, я знаю, что это одна:
/!}-!=
... используется для обозначения этого персонажа:
悠
... который, в utf8, является:
0xe6 0x82 0xa0
Я попытался подключить некоторые из этих значений (с и без ведущего /!) В uudecoder, но все они были отвергнуты как недопустимые, поэтому я не думаю, что это тоже uuencoded, хотя алфавит выглядел последовательным.
Думал, что кто-то, возможно, столкнулся с этим раньше и знал, что это за кодировка.
Это модифицируется Base64, как можно видеть в конце http://hg.openjdk.java.net/jdk8u/jdk8u/jdk/file/81e87652146b/src/windows/classes/java/util/prefs/WindowsPreferences.java –