php中js乱码处理,JavaScript_完美解决JS中汉字显示乱码问题(已解决),如题,刚才看了几篇大家的讨 - phpStudy...

完美解决JS中汉字显示乱码问题(已解决)

如题,刚才看了几篇大家的讨论,忽然也想起要将自己最近研究的问题贴出来,凡是和JS中乱码相关的问题都发到这里把,大家一起研究。:)

场景一:write写出来的内容是utf-8格式的,如果保存的write数据中有不是utf-8编码的中文,对write嵌套俩次以上就会有乱码。由于手头没有现成的文件,刚才临时制作了一个,这是1.htm页面的代码:

复制代码 代码如下:

这是引用的1.js文件代码,俩个文件均用简体中文保存而不是utf-8

复制代码 代码如下:

//这是JS递归自写过程中汉字乱码的演示程序

//不光是中文内容不行,就连注释如果是中文有时候也不行

//感觉JS一碰上中文就变得很不稳定=_='

//Dec. 29th 2005 created by shouhaimu(QQ:30836570)

function myjs(i)

{

var t="\n";

t+="

\n";

t+="\n";

t+="\n";

t+="\n";

t+="

\n";

t+="\n";

//上面这行如果改成下面这句就可以正常显示,看来确实是JS对汉字的支持不够好:

//t+="\n";

t+="\n";

t+="\n";

document.open();

document.write(t);

document.close();

}运行第2次以上就会有乱码。

场景二:通过XMLHTTP获取文件后再输出时,如果该文件包含中文信息并按gb编码,显示时中文信息会是乱码。

js代码如下:(注释是发贴子时候加的,如果怕干扰可以去掉)

复制代码 代码如下:

self.οnerrοr=null;

var Http = new ActiveXObject("Microsoft.XMLHTTP";

Http.open("GET",URL,false);      //URL是您需要获取的页面的网址

Http.send();

document.write(Http.responseText);

后来用VBS解决,改成如下:

Function bytes2BSTR(vIn)

strReturn = ""

For i = 1 To LenB(vIn)

ThisCharCode = AscB(MidB(vIn,i,1))

If ThisCharCode < &H80 Then

strReturn = strReturn & Chr(ThisCharCode)

Else

NextCharCode = AscB(MidB(vIn,i+1,1))

strReturn = strReturn & Chr(CLng(ThisCharCode) * &H100 + CInt(NextCharCode))

i = i + 1

End If

Next

bytes2BSTR = strReturn

End Function

set Http = CreateObject("Microsoft.XMLHTTP"

Http.open "Get",URL,false   //URL是您需要获取的页面的网址

Http.send ""

document.write(bytes2BSTR(Http.responseBody))

注:上面的bytes2BSTR只能对responseBody操作阿,responseText操作就不能正常显示阿,因为responseText是系统按默认编码加工以后的东东了,是一堆乱码,没法处理。但是这样倒是能读简体中文的文件了,但是读utf-8又会出错。

JS运行时汉字乱码相关问题的讨论(编辑中出现的问题请参考其他专题贴)

首先感谢斑竹得指教,这个页面不错,收藏了,具体内容研习中

http://sheneyan.com/test/testAjaxPost.htm

有些我也听说过,也做过测试,关键还有三个疑团没有解开:

一、即使是曾经正常显示的页面,如果用了后退或者读取了一个非utf-8页面以后也不能正常显示了;

二、即使所有的防乱码(当然重新编码的除外)措施都采用了,并且用同一程序打开铜一个页面,也不能保证每次出来的页面都能稳定地显示为中文;

三、远程获取数据提交表单的问题,如果目标网站用了编码和解码,那么意味着如果显示的正常了,提交的内容就成了乱码,反之,亦然。于是不得不预先对所有获取的内容重新编码,这样就离不开编码程序,也就摆脱不了VBS得阴影=_='

刚才测试中还发现个问题

先前发的VBS重编码函数,如果页面太大,IE会挂掉,具体多大估计和缓存及内存大小有关系。总之,如果让我对中文支持的程度排序得话JS

斑竹给得页面页能打开了,我对Ajax和xml都还比较陌生,虽然有听说,但一直没有介入,可否简单介绍下,如果论坛上不方便说,可以加我QQ,资料中有,谢谢了!相关阅读:

阻止JavaScript事件冒泡传递(cancelBubble 、stopPropagation)

Linux系统下使用net send工具

DBA案例分析:如何解决CPU占用100%的问题

在Fedora Linux 8下配置AC97声卡的方法

在幻灯片母版上动动手脚为 PPT2003加上总页码

使用PHPLIB访问多个数据库

初窥JQuery(二) 事件机制(1)

处理XP开机时提示DLL文件出错的故障

AJAX.NET用户开发指南

cURL抓取网页 POST数据及其他功能介绍

分析 SQL Server 的内存为何不断增加

如何打开老版本数据库?

Response 对象之Cookies集合

跨越fso、wsh、 application写文件

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值