我想添加客户端验证以计算字符。该字段限制在数据库中为300。在服务器端验证时,我得到了适当的字符串长度,但是在将表单另存为草稿时,绕过了服务器端验证。
所以我得到了例外。谁能帮忙检查
等拉丁字符的字符长度£, §, £, Ä
例如:
String s= "wa£erw£";
System.out.println("SiZE "+s.length());
System.out.println("UTF - SiZE "+s.getBytes(java.nio.charset.StandardCharsets.UTF_8).length );
输出:
SiZE 7
UTF - SiZE 9
我需要使用JavaScript计数9
答案 0 :(得分:1)
让我们清除一些东西-字符串"wa£erw£"
:
包含7个字符
在UTF-8中有9个字节,这是其中包含2个多字节字符的原因-这2个字符分别为2个字节,总计为9个字节。
在JavaScript .length()
中返回字符数,因此第一个结果是正确的。参考:JavaScript String length Property
s.getBytes(java.nio.charset.StandardCharsets.UTF_8).length
-这将首先将字符串转换为字节数组,然后返回此字节数组的长度。按照上面的字节数组将是9个字节。所以第二个也是正确的。
如果要获取JS中的字节数,则不是那么容易。您可以在此讨论中找到某种解决方案:String length in bytes in JavaScript
更好的方法是使用整个应用程序的相同编码将字符串数据正确存储在数据库中(例如,在数据库中使用UTF-8)。然后,您将摆脱所有重新编码文本的工作,诸如此类的验证问题等。如果您的数据库列与您剩余的应用程序不同,那么您也可能遇到编码问题。