2014-02-06 35 views
1

我有下面的代碼,這需要在一個HTML頁面的一些字段的用戶輸入,並將其轉換爲阿拉伯語字符:阿拉伯字符在JavaScript中顯示像問號

window.onload = function KeyboardChange(){ 


    var elements = document.querySelectorAll('.arabicChange'); 
    for (var i = elements.length - 1; i >= 0; i--) { 
     elements[i].onkeydown = function myFunction(e){ 

    var keyCode = window.event ? window.event.keyCode : e.which; 
    if(keyCode == 66) { 
       this.value += "ل"; 
       this.value +="ا"; 
       return false; 
    } 
    //this case is for deleting one character 
    if (keyCode == 8){ 
       this.value = this.value.substr(0,length(this.value)-1); 


     } 
    if (keyCode == 9){ 

     if (this == document.forms[0].ancienNomPropriete) 
      document.forms[0].nomPropriete.focus(); 
     if (this == document.forms[0].nomPropriete) 
      document.forms[0].dateBornage.focus(); 
    } 

    else{ 
     var KEYS_MAP= { 
       32 : " ", 
       97 : "1", 
       98 : "2", 
       99 : "3", 
       100: "4", 
       101: "5", 
       102: "6", 
       103: "7", 
       104: "8", 
       105: "9", 

       65 :"ض", 

       90 :"ص", 

       69 :"ث", 


       82 :"ق", 


       84 :"ف", 


       89 :"غ", 


       85 :"ع", 


       73 :"ه", 


       79 :"خ", 


       80 :"ح", 


       221 :"ج", 


       81 :"ش", 


       83 :"س", 


       68 :"ي", 


       70 :"ب", 


       71 :"ل", 


       72 :"ا", 


       74 :"ت", 


       75 :"ن", 


       76 :"م", 


       77 :"ك", 


       192 :"ط", 


       220 :"ذ", 


       87 :"ئ", 


       88 :"ء", 


       67 :"ؤ", 


       86 :"ر", 


       66 :"ل", 


       78 :"ى", 


       188 :"ة", 


       190 :"و", 


       191 :"ز", 


       223 :"ظ", 

       186 : "د" 

     }; 
     if(keyCode && KEYS_MAP[keyCode]){ 
       this.value += KEYS_MAP[keyCode]; 
       return false; 
    } 
    }; 
    return false ; 
}; 
    }; 



}; 

我把這個腳本從JSP頁面。該腳本不起作用,並且在Firefox中進行調試後,阿拉伯文字母會顯示在問號中。像這樣:

window.onload = function KeyboardChange(){ 


     var elements = document.querySelectorAll('.arabicChange'); 
     for (var i = elements.length - 1; i >= 0; i--) { 
      elements[i].onkeydown = function myFunction(e){ 

     var keyCode = window.event ? window.event.keyCode : e.which; 
     if(keyCode == 66) { 
        this.value += "�"; 
        this.value +="�"; 
        return false; 
     } 
     //this case is for deleting one character 
     if (keyCode == 8){ 
        this.value = this.value.substr(0,length(this.value)-1); 


      } 
     if (keyCode == 9){ 

      if (this == document.forms[0].ancienNomPropriete) 
       document.forms[0].nomPropriete.focus(); 
      if (this == document.forms[0].nomPropriete) 
       document.forms[0].dateBornage.focus(); 
     } 

     else{ 
      var KEYS_MAP= { 
        32 : " ", 
        97 : "1", 
        98 : "2", 
        99 : "3", 
        100: "4", 
        101: "5", 
        102: "6", 
        103: "7", 
        104: "8", 
        105: "9", 

        65 :"�", 

        90 :"�", 

        69 :"�", 


        82 :"�", 


        84 :"�", 


        89 :"�", 


        85 :"�", 


        73 :"�", 


        79 :"�", 


        80 :"�", 


        221 :"�", 


        81 :"�", 


        83 :"�", 


        68 :"�", 


        70 :"�", 


        71 :"�", 


        72 :"�", 


        74 :"�", 


        75 :"�", 


        76 :"�", 


        77 :"�", 


        192 :"�", 


        220 :"�", 


        87 :"�", 


        88 :"�", 


        67 :"�", 


        86 :"�", 


        66 :"�", 


        78 :"�", 


        188 :"�", 


        190 :"�", 


        191 :"�", 


        223 :"�", 

        186 : "�" 

      }; 
      if(keyCode && KEYS_MAP[keyCode]){ 
        this.value += KEYS_MAP[keyCode]; 
        return false; 
     } 
     }; 
     return false ; 
    }; 
     }; 



    };  

我的jsp頁面開始與下面的代碼行:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> 

<%@page language="java" contentType="text/html; charset=UTF-8"%> 
<%@ taglib prefix="html" uri="http://struts.apache.org/tags-html"%> 
<%@ taglib prefix="bean" uri="http://struts.apache.org/tags-bean"%> 
<%@ taglib prefix="logic" uri="http://struts.apache.org/tags-logic"%> 
<%@ taglib prefix="nested" uri="http://struts.apache.org/tags-nested"%> 
<%@ taglib uri="/WEB-INF/struts-layout.tld" prefix="layout" %> 
<%@ page import="fr.improve.struts.taglib.layout.workflow.LayoutPlugin" %> 

<html> 
<HEAD> 
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 
<meta http-equiv="Content-Language" content="ar-ma"> 
<link href="pages/style/main.css" rel="stylesheet" type="text/css"> 
<script language="JavaScript1.2" src="pages/KeyboardAutomaticChange.js"> </script> 

爲什麼阿拉伯字符顯示問號?

+0

赦免頂部添加以下行?你的代碼實際上是否包含'this.value + =「 」;'? –

+0

@ÁlvaroG.Vicario我編輯了我的問題:) – mounaim

回答

3

嘗試添加charset="UTF-8"在HTML

它應該是這樣的

<script language="JavaScript1.2" src="pages/KeyboardAutomaticChange.js" charset="UTF-8"> </script> 

如果失敗的話,你的JavaScript文件KeyboardAutomaticChange.js可能被保存與編碼不是UTF-8 。

我建議建立在已經配置保存爲UTF-8編碼的文件,然後複製粘貼的KeyboardAutomaticChange.js在這個文件內容的文本編輯器,一個新的JavaScript文件。

+0

我剛試過所有的解決方案Huusslv,仍然是同樣的問題。 – mounaim

+0

我遇到了與阿拉伯字符相同的問題,我創建了新文件,並通過以前的代碼..然後問題解決了! – dotfreelancer

0

在JSP頁面代碼

<%@ page contentType="text/html; charset=UTF-8" language="java"%>