作者sk1765 (鼎玉铉)
看板Ajax
标题Javascript如何把 登入转成中文字 (如何 deentity)
时间Thu Mar 3 13:46:24 2011
※ 引述《notes1000 ()》之铭言:
: 各位大大..请问 JavaScript 要如何才能把 登入 转成正常的中文字啊
: 我有一个网页系统,会上传自已修改的一段 HTML 之後,系统会自动合并起来,
: 再把内容显示出来...
: 我在上传的 HTML 中输入的是正常的中文字,但是上传之後在网页去显示原始码时
: 都是出现像 登入 这样的编码
: 由於系统会自动合并,所以不能在修改的HTML 中再使用 JavaScript
: 不知道各位大大还有什麽建议...
登 是一个 entity 浏览器会直接把html上的entity 转换成相对应的文字
如 © 等
&#xnnnn;代表16进位unicode
&#nnnn;代表10进位unicode
在这个范例里只有作 unicode的部分
var c = '我想要 登入这个网页';
var d;
d = c.replace(/&(#)?(x)?([^&;]+);/g,
function (a, b, c, d) {
var r,n = 0;
if (b === '#') {
(c === 'x') ? n = '0x' + d : n = d;
if (isFinite(n)) {
r = String.fromCharCode(n);
return r;
}
}
return a;
}
);
alert(d);
http://jsfiddle.net/wcrqL/
主要原理 只是用regexp 把字串分成entity 再把每个entity切成数字部分
和前面的 # x
再将字串转成16进位字串 和10进位字串
并测试是否能变成数字
最後把数字用fromCharCode转换成相对应的符号
fromCharCode可以转换unicode
完整的 de-entity 程式 请另行索取
--
※ 发信站: 批踢踢实业坊(ptt.cc)
◆ From: 203.73.175.74
※ 编辑: sk1765 来自: 203.73.175.74 (03/03 13:49)
1F:推 s25g5d4:为什麽要抓#出来? 03/04 21:20