是否有任何适当的解决方案来获取和保存印地语字符以将这些字符显示到 JSP 页面?



我的操作是将印地语字符保存在db中并在另一个地方获取相同的字符。 首先,我正在尝试这个:-

byte[] ob=null;
String obj="";
String original11=new String("".getBytes(),Charset.forName("UTF-8"));  
original11 = "गुणवत्ता"; 
try {

System.out.println(original11);
System.out.println(new String(original11.getBytes()));


System.out.println(new String(original11.getBytes("windows-1252"), "UTF-8"));
System.out.println(new String(original11.getBytes(),Charset.forName("UTF-8")));
byte[] bytearr = original11.getBytes("UTF-8");
obj = new String(bytearr,Charset.defaultCharset());


System.out.println("obj "+obj);
ob=Base64.getEncoder().encode(bytearr);
String encStr = new String(ob);

System.out.println(encStr);

}
catch(Exception e) {
e.printStackTrace();
}

当我尝试正常设置它时(没有与数据库连接(,第一次我收到问号(????????(。 在第二个 sout 中,我得到了相同的结果,getBytes(( 返回 [

63, 63, 63, 63, 63, 63, 63, 63]。

基础知识。

  • String/Reader/Writer保留 Unicode 文本,因此所有脚本都是可能的。
  • byte[]/InputStream/OutputStream用于二进制数据。如果实际上是文本,则需要知道它们的字符集/编码。UTF_8是 Unicode 字符集之一,允许以字节为单位的国际文本。此字符集用于将字节转换为字符串或从字符串转换字节。

  • 硬编码字符串必须使用与编辑器相同的字符集进行编译。假设编辑器的字符集可以表示字符串。要检查是否可以将其与转义字符进行比较:"uXXXXuXXXX".

  • 避免使用默认平台字符集的new String(bytes)string.getBytes(),该字符集不可移植。

    String s = new String(bytes, StandardCharsets.UTF_8);
    byte[] bytes = s.getBytes(StandardCharsets.UTF_8);
    

其他形式应该忘记,永远不要new String(s.getBytes...).

  • 数据库表和表列应支持 Unicode。看看所罗门·鲁茨基的这个答案。请注意,使用 UCS-2(几乎是 UTF-16(使用 NVARCHAR 可能需要 2 个 NVARCHAR 用于一个 Unicode 符号。保持保留的长度足够大。

  • JSP 可以指示其页面编码。表单可以与接受字符集一起提及接受 UTF-8。URLEncoder可以将 UTF-8 中的参数编码为 %.。%..%...

最新更新