我正在尝试将参数从PHP中间层传递到了解J2EE的java后端.我正在用Groovy编写控制器代码.在那里,我正在尝试解码一些可能包含国际字符的参数.
到目前为止,我对调试此问题的结果感到非常困惑,因此我希望与您分享,希望有人能够对我的结果给出正确的解释.
为了我的小测试,我传递的参数是"déjeuner".只是为了确定,System.out.println("déjeuner")正确地给了我:
déjeuner
Run Code Online (Sandbox Code Playgroud)
在控制台中
以下是原始字符串的每个字符的char/dec和hex值:
next char: d 100 64
next char: ? -61 c3
next char: ? -87 a9
next char: j 106 6a
next char: e 101 65
next char: u 117 75
next char: n 110 6e
next char: e 101 65
next char: r 114 72
Run Code Online (Sandbox Code Playgroud)
请注意,UTF-8中的c3a9序列是所希望的字符:http://www.fileformat.info/info/unicode/char/00e9/index.htm
现在,如果我尝试将此字符串作为UTF-8字符串读取,就像在stmt.getBytes("UTF-8")中一样,我突然得到一个11字节的序列,如下所示:
64 c3 83 c2 a9 6a 65 75 6e 65 72
Run Code Online (Sandbox Code Playgroud)
而stmt.getBytes("iso-8859-1")给了我9个字节:
64 c3 a9 6a 65 75 6e 65 72
Run Code Online (Sandbox Code Playgroud)
请注意c3a9序列!
现在如果我尝试将UTF-8序列转换为UTF-8,就像在
new …Run Code Online (Sandbox Code Playgroud) 我正在努力将代码从JBoss 5.1升级到JBoss 7.1,如果这些方法没有在资源适配器中显式实现,它就会失败.我理解每个人的概念,并了解两者之间的契约.我不是在询问如何实施它们或它们的含义.我特别询问为什么必须为Java EE 6代码实现它们(在这种情况下是JBoss AS 7.1).
是否有充分的理由对其进行深思熟虑或仅仅具备以下内容:
boolean equals(Object obj) { return super.equals(obj) ; }
int hashCode() { return super.hashCode() ; }
Run Code Online (Sandbox Code Playgroud)