XMLHTTP 乱码的解决方法(UTF8,GB2312 编码 解码)_javascript技巧
在数据发送一方,利用 javascript 的 escape 函数事先将所有中文转换成英文编码并保存(也可以用 ASP 等其它语言的函数实时转换输出)。
在数据接收一方,利用 javascript 的 unescape 函数将所有英文编码还原。
由于 Ajax 不论任何编码都能正常传送英文,所以用这种方法可以轻松解决。
--------------------------------------------------------------------------------
用XMLHTTP Post Form时的表单乱码有两方面的原因——Post表单数据时中文乱码;服务器Response被XMLHTTP不正确编码引起的乱码。换句话说,本文主要解决两个问题——怎样正确Post中文内容&怎样正确显示得到的中文内容。
Part I Post中文内容
先看看E文的表单是怎么提交的:
如果把strA = "submit1=Submit&text1=scsdfsd";换成:
strA = "submit1=Submit&text1=中文";
你会发现提交上去的东东根本不对,ASP中Request.Form("Text1")根本取不到值。俺用Request.BinaryRead把一个HTML Form中的Post内容写出来看了看,才发现问题——Form提交时也要编码的,编码后的中文是类似于%??%??的转义字符,比如“中文”就被编码为:%D6%D0%CE%C4。呵呵,也怪俺笨,人家CONTENT-TYPE里明明写的清清楚楚——application/x-www-form-urlencoded,urlencoded嘛当然就是这个样子了。既然这样,那我们也知道该怎么办了——自己做转换,代码见下:
(在这里俺把前面的JavaScript的代码改成了VBScript,不是吃饱了撑的没事干,原因见后)
Part II.正确显示得到的中文内容
OK,如果你在Server端把Form的内容写到数据库/文件的话,你在那里看到的中文毫无问题,但是,假如你想看看Server的Response——问题来了:如果Response的结果不是XML,XMLHTTP.responseXML里当然是不会有东东的,那就用responseText好了,在代码的最后加一句:
alert(oReq.responseText)
看看俺们辛勤劳动的结果 :P
但是但是.....怎么所有的中文全变成了方格? (我打不出来,有兴趣自己去试,也不用Post,Get一个含有中文的网页就可以发现了。)
原因很简单:XMLHTTP得到Response时假定Response是UTF8编码的,如果Response是XML,那还可以通过encoding来指定编码,但HTML就不行了。(见鬼的GB2312,再次打倒!)所以它把含GB2312编码的HTML当成UTF8格式,不出错才有鬼!
不过好在还有补救的办法:XMLHTTP的responseBody 属性里包含的可是未解码的Resonse——"a raw undecoded bytes as received directly from the server" :),唯一的问题是,responseBody返回的是一个unsigned bytes数组,我们怎么去访问它,怎么把它转换成BSTR?
这就是为什么我在上面把代码改成VBScript的原因——VBScript Can do it,but JavaScript Cannot!
代码见下:
----------------------------------------以上为转载-----------------------------
http://www.dhtmlx.com
Start Building Professional Ajax
Web Applications Today
最近用了 DHTMLX的tree,中文的xml居然用不了,报错,整个系统是GB2312的,而DHTMLX只支持UTF8,英文是正常的,中文就出错。
用法也很简单,是DHTMLX 演示里用的代码。
var obj=document.getElementById(oid);
obj.style.display="block";
obj.focus();
if(obj.innerHTML!="")return;
tree=new dhtmlXTreeObject(oid,"100%","100%",0);
tree.setImagePath("js/imgs/csh_vista/");
tree.setOnClickHandler(click1);
tree.setXMLAutoLoading("tree.asp");
//load first level of tree
tree.loadXML("tree.asp?id=0");
tree.asp编码为gb2312,和整个系统一致,用response.write返回一个xml
整个系统编码改不了,只有在DHTMLX上想办法了。
查了些资料,最终解决了。
再深入一层发现是,Microsoft.XMLHTTP的原因,就查到了上面的文件。
如是就简单了,修改如下:
1. 增加一个VBScript的中文转换的函数
2.dhtmlxcommon.js的 getXMLTopNode处
var xmlString = this.xmlDoc.responseText;
改为
var xmlString = bin2str(this.xmlDoc.responseBody);//可以在js里直接调用VBScript脚本
3.同时 在输出xml的asp 文件开头加入
当然文件也是保存为gb2312格式的。

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Lösung für verstümmelte Word-Seitenzahlen: 1. Öffnen Sie das Word-Dokument und klicken Sie auf die Option „Datei“ in der oberen linken Ecke. 2. Wählen Sie die Option „Mehr“ und klicken Sie dann auf die Schaltfläche „Optionen“. 3. Wählen Sie „Erweitert“. 4. Suchen Sie unter „Dokumentinhalt anzeigen“ nach „Feldcodes anzeigen“, entfernen Sie das Häkchen vor und klicken Sie auf „OK“, um zur Startseite zurückzukehren.

Das verstümmelte Linux-Chinesisch-Problem ist ein häufiges Problem bei der Verwendung chinesischer Zeichensätze und Kodierungen. Verstümmelte Zeichen können durch falsche Dateikodierungseinstellungen, nicht installiertes oder eingestelltes Systemgebietsschema, Konfigurationsfehler bei der Terminalanzeige usw. verursacht werden. In diesem Artikel werden mehrere gängige Problemumgehungen vorgestellt und spezifische Codebeispiele bereitgestellt. 1. Überprüfen Sie die Dateikodierungseinstellung. Verwenden Sie den Dateibefehl im Terminal, um die Kodierung der Datei anzuzeigen: file-ifilename

Lösung für verstümmelte chinesische Zeichen in Linux tty: 1. Laden Sie die Schriftart fbterm über den Befehl „sudo apt-get install fbterm“ herunter. 2. Führen Sie den Befehl „sudo fbterm“ aus. 3. Ändern Sie die Schriftart und -größe in „font-names“. =Ubuntu Mono-Schriftgröße = 14 Zoll ist ausreichend.

Lösungen für den verstümmelten Start von Tomcat: 1. Ändern Sie die Konfigurationsdatei von Tomcat. 3. Ändern Sie die Codierung des Befehlszeilenfensters. 5. Überprüfen Sie die Projektcodierung Datei; 7, versuchen Sie es mit anderen Lösungen. Detaillierte Einführung: 1. Ändern Sie die conf-Konfigurationsdatei von Tomcat, öffnen Sie das conf-Verzeichnis von Tomcat, suchen Sie die Datei „logging.properties“ usw.

Im Windows 10-System sind verstümmelte Zeichen häufig. Der Grund dafür ist häufig, dass das Betriebssystem einige Zeichensätze nicht standardmäßig unterstützt oder dass ein Fehler in den eingestellten Zeichensatzoptionen vorliegt. Um das richtige Medikament zu verschreiben, analysieren wir im Folgenden die tatsächlichen Betriebsabläufe im Detail. So lösen Sie verstümmelten Windows 10-Code: 1. Öffnen Sie die Einstellungen und suchen Sie nach „Zeit und Sprache“. 2. Suchen Sie dann nach „Sprache“. 3. Suchen Sie nach „Spracheinstellungen verwalten“. 4. Klicken Sie hier auf „Regionale Systemeinstellungen ändern“. 5. Überprüfen Sie, wie gezeigt, und klicken Sie Stellen Sie einfach sicher.

Wie kann das Problem verstümmelter Textdokumente in Win11 gelöst werden? Wenn viele Benutzer das Win11-System verwenden, sind Textdokumente verstümmelt und können nicht normal gelesen werden. Viele Freunde wissen nicht, wie sie dieses Problem lösen können. Tatsächlich ist diese Methode nicht schwierig. Im Folgenden hat der Herausgeber die Schritte zur Lösung des Problems verstümmelter Windows 11-Systemdokumente zusammengestellt. Schritte zum Auflösen verstümmelter Windows 11-Systemdokumente: 1. Öffnen Sie zunächst die Systemsteuerung von Win11, geben Sie „Systemsteuerung“ in das Suchfeld unten ein und klicken Sie auf „Suchen“, um die Systemsteuerung aufzurufen. 2. Nachdem Sie das Panel betreten haben, suchen Sie die Uhr und den Bereich, klicken Sie zum Betreten und klicken Sie dann auf die Bereichsoption. 3. Klicken Sie nach der Eingabe auf das Verwaltungsfeld und dann auf „Regionale Einstellungen des Systems ändern“.

Wenn viele Benutzer Computer verwenden, werden sie feststellen, dass es viele Dateien mit der Endung dll gibt, aber viele Benutzer wissen nicht, wie man solche Dateien öffnet. Wer es wissen möchte, schaut sich bitte die folgenden Details an So öffnen und bearbeiten Sie DLL-Dateien: 1. Laden Sie eine Software namens „Exescope“ herunter, laden Sie sie herunter und installieren Sie sie. 2. Klicken Sie dann mit der rechten Maustaste auf die DLL-Datei und wählen Sie „Ressourcen mit Exescope bearbeiten“. 3. Klicken Sie dann im Popup-Fehlerfeld auf „OK“. 4. Klicken Sie dann im rechten Bereich auf das „+“-Zeichen vor jeder Gruppe, um den darin enthaltenen Inhalt anzuzeigen. 5. Klicken Sie auf die DLL-Datei, die Sie anzeigen möchten, klicken Sie dann auf „Datei“ und wählen Sie „Exportieren“. 6. Dann können Sie

Einige Freunde möchten einen Notizblock öffnen und stellen fest, dass ihr Win11-Notizblock verstümmelt ist und nicht wissen, was sie tun sollen. Tatsächlich müssen wir im Allgemeinen nur die Region und die Sprache ändern. Win11 Notepad ist verstümmelt: Verwenden Sie im ersten Schritt die Suchfunktion, suchen Sie und öffnen Sie die „Systemsteuerung“. Klicken Sie im zweiten Schritt auf „Datum, Uhrzeit oder Zahlenformat ändern“ unter „Uhr und Region“. oben auf der Karte. Der vierte Schritt besteht darin, unten auf „Regionale Systemeinstellungen ändern“ zu klicken. Der fünfte Schritt besteht darin, die aktuellen regionalen Systemeinstellungen auf „Chinesisch (vereinfacht, China)“ zu ändern und zum Speichern auf „OK“ zu klicken.
