在XML

2014-08-28 54 views
-2

阿拉伯語我有這樣的代碼:
的html代碼:在XML

<script> 
function loadXMLDoc(filename) 
{ 
if (window.XMLHttpRequest) 
{ 
xhttp=new XMLHttpRequest(); 
} 
else 
{ 
xhttp=new ActiveXObject("Microsoft.XMLHTTP"); 
} 
xhttp.open("GET",filename,false); 
xhttp.send(); 
return xhttp.responseXML; 
} 
var xmlDoc = loadXMLDoc('users.xml'); 
var x = xmlDoc.getElementsByTagName('usr'); 
document.write(x.length); 
</script> 

XML代碼:

<?xml version="1.0" encoding="utf-8"?> 
<users xmlns="http://localhost" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://localhost users.xsd"> 
<usr><age>25</age><country>الاردن</country></usr> 
<usr><age>30</age><country>مصر</country></usr> 
</users> 

而且我想在另一個HTML文檔中的HTML代碼像這樣:
html代碼:

<!DOCTYPE html unicode="utf-8"> 
<head> 
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /> 
</head> 
<body> 
<?php 
include 'users.html'; 
?> 
</body> 
</html> 

的JavaScript代碼的輸出爲:0,而應該是2,如果我用英文文本替換XML文檔中的阿拉伯文字輸出成爲2
爲什麼阿拉伯文字破譯密碼?

+0

無法重現。你可以顯示相關的HTTP頭文件和/或給出一個測試的實時URL?瀏覽器控制檯中是否有錯誤消息? – 2014-08-28 12:26:42

+0

@ JukkaK.Korpela這是我在運行var_dump(headers_list())時得到的結果; 「array(2){[0] => string(24)」X-Powered-By:PHP/5.3.24「[1] => string(23)」Content-type:text/html「}」no我沒有實時網址,瀏覽器控制檯中沒有錯誤消息。 – user3926604 2014-08-28 12:34:49

+0

如果將'script'元素直接插入html代碼而不是使用PHP進行包含,會發生什麼? (我只是試圖將問題簡化爲一個更簡單的情況。) – 2014-08-28 12:40:27

回答

0

我不知道爲什麼你想包括HTML('users.html'),這是不是在你的問題描述在PHP頁面內,如果你使用AJAX。無論如何,我在你的代碼中看到一些小問題。

在現代瀏覽器UTF8正確的格式是這樣的:

<!doctype html> 
<html> 
<head> 
<meta charset="utf-8"><!-- how to set utf8 in modern browsers --> 
<title>Users</title> 
<script> 
function show(){ 
document.body.innerHTML=this.responseXML.getElementsByTagName('usr').length 
} 
window.onload=function(){ 
with(new XMLHttpRequest)open('get','users.xml'),onload=show,send() 
} 
</script> 
</head> 
<body> 
</body> 
</html> 

這個例子中工作(使用阿拉伯語的XML)上,即10,鉻,野生動物園,IOS,Android的,歌劇ê很可能也是這樣Firefox瀏覽器。

現在如果你完全需要包括你需要或許檢查一些PHP設置....具有快速搜索,我發現這個PHP頁面中HTML ...

mb_internal_encoding("UTF-8"); 

http://php.net/manual/en/function.mb-internal-encoding.php

但也有很多方法可以將編碼設置爲UTF-8 &包括文件...

個人,如果你使用AJAX,如果你堅持發表您的users.html讓我們有更多的信息,我不會用你的方法...關於可能導致問題的原因。

js代碼正確返回2的長度,而ajax是異步的,它應該如何。 更多關於Ajax:https://stackoverflow.com/a/18309057/2450730

我用with的原因:The use of "with" statement in javascript, in some extreme rare cases

注:包括另一個HTML頁面內全HTML網頁是不是做了正確的方法,你應該只包括必要的零件(HTML元素) 。

如果您對我的代碼有任何疑問,只需詢問。