0

I need your help in showing the Arabic numbers in xhtml page. Currently, I am getting the numbers in the xhtml page as (???? question mark) because when I am saving the below method in Jdeveloper, the Arabic numbers will be converted to question mark. This method will be converting the String of the English numbers to Arabic and its code is below:

String str ="";
StringBuilder builder = new StringBuilder();
str = "1234566.555";
char[] arabicChars = {'٠','١','٢','٣','٤','٥','٦','٧','٨','٩'};

for(int i =0;i<str.length();i++)
{
    if(Character.isDigit(str.charAt(i)))
    {
        builder.append(arabicChars[(int)(str.charAt(i))-48]);
    }
    else
    {
        builder.append(str.charAt(i));
    }
}

And the xhtml code is:

<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<f:view xmlns:f="http://java.sun.com/jsf/core" xmlns:h="http://java.sun.com/jsf/html">
    <html xmlns="http://www.w3.org/1999/xhtml" xmlns:h="http://java.sun.com/jsf/html"
          xmlns:f="http://java.sun.com/jsf/core" xmlns:ui="http://java.sun.com/jsf/facelets"
          xmlns:p="http://primefaces.org/ui">
        <h:body> 
<h:outputText value="#{user1.builder}"/>
 </h:body>
 </html>
</f:view>
99maas
  • 1,239
  • 12
  • 34
  • 59

1 Answers1

0

This function is helpful for converting English numbers to Arabic:

StringBuilder builder = new StringBuilder();
private String arabicDigits="";

public String arabicNumners(String englishNumber) {

String str=englishNumber;
char[] arabicChars = {'\u0660','\u0661','\u0662','\u0663','\u0664','\u0665','\u0666','\u0667','\u0668','\u0669'};

                                for(int i =0;i<str.length();i++)
                                {
                                    if(Character.isDigit(str.charAt(i)))
                                    {
                                        builder.append(arabicChars[(int)(str.charAt(i))-48]);
                                    }
                                    else
                                    {
                                        builder.append(str.charAt(i));
                                    }
                                }
                                System.out.println("Number in English : "+str);
                                System.out.println("Number In Arabic : "+builder.toString() );



   return builder.toString();



}
99maas
  • 1,239
  • 12
  • 34
  • 59