写了个JS编码和解码Unicode的小程序,解码中文显示乱码!

写了个JS编码和解码Unicode的小程序,解码中文显示乱码!,第1张

function native2ascii(nativecode) {

    nativecode = nativecode.split("")

    var ascii = ""

    for (var i = 0 i < nativecode.length i++) {

  携粗游      var code = Number(nativecode[i].charCodeAt(0))

    辩销    if (code > 127) {

            var charAscii = code.toString(16)

            charAscii = new String("0000").substring(charAscii.length, 4) + charAscii

            ascii += "\\u" + charAscii

        } else {

            ascii += nativecode[i]

        }

    }

    return ascii

}

function ascii2native(asciicode) {

    asciicode = asciicode.split("\\u")

    var nativeValue = asciicode[0]

    for (var i = 1 i < asciicode.length i++) {

        var code = asciicode[i]

        nativeValue += String.fromCharCode(parseInt("0x" + code.substring(0, 4)))

        if (code.length > 4) {

            凳橘nativeValue += code.substring(4, code.length)

        }

    }

    return nativeValue

}

var input = prompt('请输入消息')

console.log(native2ascii(input))

console.info(ascii2native(input))

python3中encode和decode跟python2还是有一定的区别的,在python3中: 

encode(编码):按照某种规则将“文本”转换为“字和顷节流”。  python 3中表示:unicode变成str

decode(解码):将拆乎“字唤御陆节流”按照某种规则转换成“文本”。   python3中表示:str变成unicode

字符串在Python内部的表示是Unicode编码,因此在做编码转换时,通常需要以Unicode作为中间编码,即先将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(encode)成另一种编码。

1、传递参谈判数为对象格式

参数为对象则需先使用 JSON.stringify()进行转换 , 接收后使用JSON.parse()转为对象.

但这样传参有一个问题,当对象数据长度过大时会报错,因为url传参时程序把过长的那段数据给截取掉了,导致数据转换回来时格式不对而报错。

2、传递参数中含有? = &等特殊字符

若传递参数中含有=,?,&等特殊字符,无法正常传递参数,则慎渣需要进行编码解码。

解决:

这时可含孝改以再添加另一个API:encodeURIComponent(obj) 和 decodeURIComponent(options.obj),在encodeURIComponent之前要用JSON.stringify()先转换数据,decodeURIComponent之后再用JSON.parse()转换回来。

encodeURIComponent(JSON.stringify(obj)) 为跳转url时的转换方法。

JSON.parse(decodeURIComponent(options.obj)) 为接收参数页面的转换方法。

例如:


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

原文地址: http://outofmemory.cn/yw/12324896.html

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

发表评论

登录后才能评论

评论列表(0条)

保存