I was trying to decode string which in FARSI to UTF-8 but then i checked browser itself convert FARSI string into Decimal NCRs Code
How i can convert Decimal NCRs Code into UTF-8 ??
String farMsg = "عتباري";
String finalMsg = new String(farMsg.getBytes(),"UTF-8");
System.out.println("\n Farsi Message \n" + finalMsg);
when i am trying convert using above code it is working fine
but if i am using same string from an input box of JSP
page its is giving me some output like this
عتباري
What modification do I need to do for converting into same.
EDIT
I entered عتباري
in the jsp input box and in used request.getParameter("faMSg")
to get the value and here i got عتباري
but i should get عتباري
I created a custom function which converts DecimalNCR to 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();
}
This converts successfully your supplied String
.
EDIT I tested the above function with Chinese 游鍚堃
,你好你怎么样
and Farsi (عتباري
, and مرحبا كيف حالك
) character it provided correct results.
You should try setting content type to utf-8
in jsp page :
<%@page contentType="text/html;charset=UTF-8"%>
OR
<% @page pageEncoding="UTF-8" %>
UTF-8 is not default content type in jsp, and there are all sorts of interesting problems that arise from this.
Browsers will use the encoding of the page.So if you use UTF-8
in all your pages, then most browsers will send all data in UTF-8
encoding as well.
If your are reading textbox value in Servlet than You can tell your application server to treat any input as UTF-8, by calling,
request.setCharacterEncoding("UTF-8");
before reading value on server side.
EDIT :
To apply this setting globally so that you don't need to edit every individual JSP, you can also add the following entry to your /WEB-INF/web.xml file:
<jsp-config>
<jsp-property-group>
<url-pattern>*.jsp</url-pattern>
<page-encoding>UTF-8</page-encoding>
</jsp-property-group>
This is work fine - white space is the problem that I solved
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();
}