Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Convert Decimal NCRs Code into UTF-8 in java (JSP)

Tags:

java

jsp

utf-8

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 عتباري

like image 954
Dharmjeet Kumar Avatar asked Dec 27 '13 11:12

Dharmjeet Kumar


People also ask

How to convert special characters to UTF-8 in java?

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.

What is uFFFF in java?

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.

What is the use of UTF-8 in Java?

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.


2 Answers

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.

like image 89
dbw Avatar answered Oct 27 '22 19:10

dbw


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>

like image 34
Yagnesh Agola Avatar answered Oct 27 '22 18:10

Yagnesh Agola