* .jjtファイルのキリル文字トークンを作成できますか?
たとえば、トークンはjjtで与えられます:
TOKEN : /* LITERALS */
{
< TEST: "тест" >
| < DEVELOP: "разработка" >
}
しかし、jjファイルのトークンはひどいように見えます:
TOKEN : /* LITERALS */
{
< TEST: "\u0421\u201a\u0420\u00b5\u0421\u0403\u0421\u201a" >
| < DEVELOP: "\u0421\u0402\u0420\u00b0\u0420\u00b7\u0421\u0402\u0420\u00b0\u0420\u00b1\u0420\u0455\u0421\u201a\u0420\u0454\u0420\u00b0" >
}
次のオプションを使用します。
options {
JDK_VERSION = "1.6";
UNICODE_INPUT = true;
JAVA_UNICODE_ESCAPE = false;
TRACK_TOKENS=true;
STATIC=false;
}
彼女のクラスの助けを借りてUnicodeを実行する場合:
class GetUnicode {
public static void main(String[] args) {
if (args.length < 1) return;
for (String input: args) {
for (int index = 0; index < input.length(); ++index) {
final char c = input.charAt(index);
final String s = String.format ("\\u%04x", (int)c);
System.out.print(s);
}
System.out.println();
}
}
}
プログラム開始後:
$ java GetUnicode тест разработка
\u0442\u0435\u0441\u0442
\u0440\u0430\u0437\u0440\u0430\u0431\u043e\u0442\u043a\u0430
その結果、Unicode文字列が一致していないことがわかります。例えば:
"\u0442\u0435\u0441\u0442" != "\u0421\u201a\u0420\u00b5\u0421\u0403\u0421\u201a"
なぜこれが起こるのか考えがありますか?
PS:このバグはWindowsOSでのみ発生します。