在Java(JSP)中将十进制NCR代码转换为UTF-8
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Java(JSP)中将十进制NCR代码转换为UTF-8相关的知识,希望对你有一定的参考价值。
我试图解码FARSI中的字符串到UTF-8然后我检查浏览器本身将FARSI字符串转换为十进制NCR代码
如何将十进制NCR代码转换为UTF-8?
String farMsg = "عتباري";
String finalMsg = new String(farMsg.getBytes(),"UTF-8");
System.out.println("
Farsi Message
" + finalMsg);
当我尝试使用上面的代码转换它工作正常,但如果我使用JSP
页面的输入框中的相同字符串,它给我一些像这样的输出
عتباري
转换成相同内容需要做哪些修改。
编辑
我在jsp输入框中输入
عتباري
并使用request.getParameter("faMSg")
获取值,在这里我得到了عتباري
但我应该得到عتباري
我创建了一个自定义函数,将DecimalNCR转换为String
。
public static String ConvertDecimalNCRToString(String hex)
{
String myString = hex.replace("&#", "");
String[] split = myString.split(";");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < split.length; i++)
{
sb.append((char)Integer.parseInt(split[i]));
}
return sb.toString();
}
这会成功转换您提供的String
。
编辑我测试了上述函数与中国游鍚堃
,你好你怎么样
和波斯语(عتباري
,和مرحبا كيف حالك
)字符,它提供了正确的结果。
您应该尝试在jsp页面中将内容类型设置为utf-8
:
<%@page contentType="text/html;charset=UTF-8"%>
要么
<% @page pageEncoding="UTF-8" %>
UTF-8不是jsp中的默认内容类型,并且由此产生了各种有趣的问题。
浏览器将使用页面的编码。因此,如果您在所有页面中使用UTF-8
,那么大多数浏览器也将以UTF-8
编码发送所有数据。
如果您正在读取Servlet中的文本框值,那么您可以通过调用告诉应用程序服务器将任何输入视为UTF-8,
request.setCharacterEncoding("UTF-8");
在阅读服务器端的值之前。
编辑:
要全局应用此设置以便您不需要编辑每个单独的JSP,还可以将以下条目添加到/WEB-INF/web.xml文件中:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
这很好用 - 白色空间是我解决的问题
Public static String ConvertDecimalNCRToString(String hex)
{
String myString = hex.replace("&#", "");
String[] split = myString.split(";");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < split.length; i++)
{
char first = split[i].charAt(0);
if (first==' ')
{
sb.append(" ");
split[i]=split[i].substring(1);
}
if (split[i].isEmpty())
{
}else
{
sb.append((char)Integer.parseInt(split[i]));
}
}
return sb.toString();
}
以上是关于在Java(JSP)中将十进制NCR代码转换为UTF-8的主要内容,如果未能解决你的问题,请参考以下文章