用java(JSP)将十进制NCRs代码转换为UTF-8

用java(JSP)将十进制NCRs代码转换为UTF-8,java,jsp,utf-8,Java,Jsp,Utf 8,我试图将波斯语字符串解码为UTF-8,但我检查了浏览器本身,将波斯语字符串转换为十进制NCRs代码 如何将十进制NCRs代码转换为UTF-8 String farMsg = "عتباري"; String finalMsg = new String(farMsg.getBytes(),"UTF-8"); System.out.println("\n Farsi Message \n" + finalMsg); 当我尝试使用上述代码转换时,它工作正常 但是,如果我使用的是来自JSP页面输入框的

我试图将波斯语字符串解码为UTF-8,但我检查了浏览器本身,将波斯语字符串转换为十进制NCRs代码

如何将十进制NCRs代码转换为UTF-8

String farMsg = "عتباري";
String finalMsg = new String(farMsg.getBytes(),"UTF-8");
System.out.println("\n Farsi Message \n" + finalMsg);
当我尝试使用上述代码转换时,它工作正常 但是,如果我使用的是来自
JSP
页面输入框的相同字符串,那么它会给我这样的输出

عتباري
我需要做什么修改才能转换成相同的

编辑

我在jsp输入框和used
request.getParameter(“faMSg”)
中输入了
تباري但我应该得到


您应该尝试在jsp页面中将内容类型设置为
utf-8

<%@page contentType="text/html;charset=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>

*.jsp
UTF-8

我创建了一个自定义函数,可以将小数NCR转换为
字符串

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();
}
public静态字符串转换器decimalncrtostring(字符串十六进制)
{
字符串myString=hex.replace(&#“,”);
String[]split=myString.split(“;”);
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
这将成功转换您提供的
字符串


EDIT我用中文
游鍚堃
你好你怎么样和波斯语(
字符)它提供了正确的结果。

这是一个很好的工作-空白是我解决的问题

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();
}
Public静态字符串转换器decimalncrtostring(字符串十六进制)
{
字符串myString=hex.replace(&#“,”);
String[]split=myString.split(“;”);
StringBuilder sb=新的StringBuilder();
对于(int i=0;i
从jsp页面,@dbw我在jsp输入框和used
request.getParameter(“faMSg”)中输入了
تباري但我应该获得
请求的值。getParameter(“faMSg”)
在哪里读取值?在servlet中?在其他JSP页面中没有?如果我的字符串类似于java.lang.NumberFormatException:输入字符串:“1990/05/01”java.lang.NumberFormatException.forInputString(NumberFormformFormatException.java:但是根据你的问题你得到的字符串是十进制NCR格式的十进制NCR字符串和十进制NCR的十进制NCR格式的十进制NCR字符串,但根据你的问题你得到的字符串是十进制NCR格式的十进制NCR格式的十进制NCR字符串是根据你的问题你得到的字符串是<代码>以上字符串是<代码>以及以上字符串是<代码>以及上述字符串是<代码>157 7 7 8;358;157 8;157 8;157 7;157;157;157;以及以及以及15 15 15;157;5;15;5;5;以及以及以及15;15;15;5;15;15;15;15;15;5;5;15;5;15;15;5;15;5;5;和15;15;15;5;15;15;5;5;15;15;15;5;5;15;85;和15;以及15;15;15;第五十七条、第五十七条、第四十八条、第四十七条、第五十三条、第四十七条、第四十八条、第四十九条、第三十二条、第1605条、第1740条、第三十二条、第1576条、第1575条、第1588条、第1583条,是代码吗您输入的一半是十进制NCR,部分是普通字符是的,字符串可以包含数字。您可以稍微更改上述逻辑,并添加条件,确定字符是否包含
&
或不应用于web.xml文件或jsp页面?
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();
}
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();
}