通过js输出,将汉字“木本无心”转成了%E6%9C%A8%E6%9C%AC%E6%97%A0%E5%BF%83,如何显示汉字

通过js输出,将汉字“木本无心”转成了%E6%9C%A8%E6%9C%AC%E6%97%A0%E5%BF%83,如何显示汉字,第1张

用escape()可以把“木本无心”转成了那一串字符

要变回来就要用它的逆向函数unescape()代码如下:

documentwrite(escape('那一串字符'))

我写了代码如下, 测试可行, 供参考:

//主要靠这个函数实现: 将body下的文本节点中的searchWord, 替换为replaceWord

function replaceBodyText(searchWord, replaceWord){

    var reg = new RegExp(searchWord, 'g');

    function replaceNode(node){

        nodechildNodesforEach(function(v){

            if(vnodeName === 'SCRIPT')

                return; //排除<script>标签

            if(!vhasChildNodes()){

                if(regtest(vtextContent))

                    vtextContent = vtextContentreplace(reg, replaceWord);

                return;

            }

            replaceNode(v);

        });

    }

    replaceNode(documentbody);

}

//绑定一个事件测试用, 点击这个按钮后才会执行;

documentquerySelector('#testBtn')addEventListener('click', function(){

    replaceBodyText('中国', '美国');

});

//实际使用中直接调用函数即可:

//以下语句表示将所有文本节点中的"中国"替换为"美国:

//replaceBodyText('中国', '美国');

不用转换,直接用,就可以了。

可以试试

var a ='\u5a92\u5927\u5b66';

alert(a);

documentbodyinnerHTML=a

不论是alert,还是直接放到innerHTML里,都可以用的,前提是要通过脚本来使用。

我记得好像是说javascript本身就是unicode编码,而这种'\u5a92\u5927\u5b66'形式恰好就是unicode的编码形式,还有形式的呢。

下面的这个函数就是判断输入的值是否含有汉字或字符:function

checkFormat(str){if

(escape(str)indexOf("%u")!=-1)

alert("不能含有汉字");

else

if(strmatch(/\D/)!=null){alert('不能含有字母');

}

}其中,str是你在文本框中输入的值,传到此函数中,来进行判断。具体用法就是:<input

name="aa"

type="text"

onblur="checkFormat(thisvalue)">

thisvalue即为你输入的值。当输完以后在别的地方点一下左键即可触发本函数来判断你是否输入了汉字或字符。另外,还可以在此函数上改进一下,再加一个参数用来显示哪个属性不能为空:function

checkFormat(str,name){if

(escape(str)indexOf("%u")!=-1)

if(name=='phone')

{

alert("电话不能含有汉字");

}

else

if(strmatch(/\D/)!=null)

{

if(name=='phone')

{

alert('电话不能含有字母');

}

中文字符匹配js正则表达式,普遍使用的正则是[\u4e00-\u9fa5],但这个范围并不完整。例如: /[\u4e00-\u9fa5]/test( '⻏' ) // 测试部首⻏,返回false 。

根据Unicode 50版编码,要准确的判断一个中文字符要包括:

范围 含义 范围 含义

2E80-2EFF CJK 部首补充 2F00-2FDF 康熙字典部首

3000-303F CJK 符号和标点 31C0-31EF CJK 笔画

3200-32FF 封闭式 CJK 文字和月份 3300-33FF CJK 兼容

3400-4DBF CJK 统一表意符号扩展 A 4DC0-4DFF 易经六十四卦符号

4E00-9FBF CJK 统一表意符号 F900-FAFF CJK 兼容象形文字

FE30-FE4F CJK 兼容形式 FF00-FFEF 全角ASCII、全角标点

因此,正确的匹配中文字符正则表达式为:

var rcjk = /[\u2E80-\u2EFF\u2F00-\u2FDF\u3000-\u303F\u31C0-\u31EF\u3200-\u32FF\u3300-\u33FF\u3400-\u4DBF\u4DC0-\u4DFF\u4E00-\u9FBF\uF900-\uFAFF\uFE30-\uFE4F\uFF00-\uFFEF]+/g;

var GB2312UnicodeConverter = {

    ToUnicode: function (str) {

        return escape(str)toLocaleLowerCase()replace(/%u/gi, '\\u');

    }

    , ToGB2312: function (str) {

        return unescape(strreplace(/\\u/gi, '%u'));

    }

};

用此方法试试。

个人觉得这个转码的工作最好还是在接收端做

以上就是关于通过js输出,将汉字“木本无心”转成了%E6%9C%A8%E6%9C%AC%E6%97%A0%E5%BF%83,如何显示汉字全部的内容,包括:通过js输出,将汉字“木本无心”转成了%E6%9C%A8%E6%9C%AC%E6%97%A0%E5%BF%83,如何显示汉字、js获取网页当中body里所有标签里面的指定汉字并进行批量替换、js格式怎么转换成正常汉字显示呢\u6e05\u534e\u5927\u5b66等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9325834.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-27
下一篇 2023-04-27

发表评论

登录后才能评论

评论列表(0条)

保存