JavaScript如何对后台utf8编码的字符串解码?

JavaScript019

JavaScript如何对后台utf8编码的字符串解码?,第1张

JavaScript对utf-8字符可以使用原生的Javascript代码来进行转义后再解码。该编码其实不是utf8,而是unicode编码。这里的字符实际上是html实体。

方法定义如下:

var decodeHtmlEntity = function(str) {

return str.replace(/(\d+)/g, function(match, dec) {

return String.fromCharCode(dec)

})

}

输入:

var str = 'JavaScript高级程序设计'

console.log(decodeHtmlEntity(str))

输出:

JavaScript高级程序设计

%E6%98%BE%E5%BE%AE%E9%95%9C 是UTF-8的加码方式

%CF%D4%CE%A2%BE%B5 是GB2312的加码方式

js目前没有自己指定编码方式的加码方法。

加码方法有以下2种

encodeURI 方法

将文本字符串编码为一个有效的统一资源标识符 (URI)。

encodeURI(URIString)

必选的 URIString 参数代表一个已编码的 URI。

encodeURI 方法返回一个编码的 URI。如果您将编码结果传递给 decodeURI,那么将返回初始的字符串。encodeURI 方法不会对下列字符进行编码:":"、"/"、"" 和 "?"。请使用 encodeURIComponent 方法对这些字符进行编码。

encodeURIComponent 方法

将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。

encodeURIComponent(encodedURIString)

必选的 encodedURIString 参数代表一个已编码的 URI 组件。

encodeURIComponent 方法返回一个已编码的 URI。如果您将编码结果传递给 decodeURIComponent,那么将返回初始的字符串。因为 encodeURIComponent 方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如 /folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用 encodeURI 方法进行编码。

java不同编码之间进行转换,都需要使用unicode作为中转。以utf-8转gbk为例,示例代码如下: String t = "这是一个字符串aaa111" String utf8 = new String(t.getBytes( "UTF-8")) System.out.println(utf8) String unicode = new String(utf8.getBytes(),"UTF-8") System.out.println(unicode) String gbk = new String(unicode.getBytes("GBK")) System.out.println(gbk)