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 usedrequest.getParameter("faMSg")
to get the value and here i gotعتباري
but i should getعتباري
In order to convert Unicode to UTF-8 in Java, we use the getBytes() method. The getBytes() method encodes a String into a sequence of bytes and returns a byte array.
Internally, even in Java, a "string" doesn't contain two backslashes. I read the original version as "\uFFFF", a "generic" string, without escaping, because the poster used the lowercase "string" word and not "String" and because he precisely stated that the string was made of 6 characters.
UTF-8 represents a variable-width character encoding that uses between one and four eight-bit bytes to represent all valid Unicode code points. A code point can represent single characters, but also have other meanings, such as for formatting.
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>
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With