JavaScript相当于Java的URLEncoder.encode(“String”,“UTF-8”)

时间:2014-10-11 06:51:20

标签: javascript

我想在JavaScript中将字符串编码为UTF-8。在java中,我们使用URLEncoder.encode("String", "UTF-8")来实现这一目标。

我知道我们可以使用encodeURIencodeURIComponent,但它会产生不同的输出than URLEncoder.encode

任何人都可以建议任何可用的JS方法,以实现与URLEncoder.encode相同的输出。

注意: 由于限制,我无法使用jQuery。

2 个答案:

答案 0 :(得分:0)

我不知道这个javaURLEncode()函数是否与Java的URLEncoder.encode方法相匹配,但它可能接近您所寻找的内容:

function javaURLEncode(str) {
  return encodeURI(str)
    .replace(/%20/g, "+")
    .replace(/!/g, "%21")
    .replace(/'/g, "%27")
    .replace(/\(/g, "%28")
    .replace(/\)/g, "%29")
    .replace(/~/g, "%7E");
}

var testString = "It's ~ (crazy)!";
var jsEscape = escape(testString);
var jsEncodeURI = encodeURI(testString);
var jsEncodeURIComponent = encodeURIComponent(testString);
var javaURLEncoder = javaURLEncode(testString);
alert("Original: " + testString + "\n" +
  "JS escape: " + jsEscape + "\n" +
  "JS encodeURI: " + jsEncodeURI + "\n" +
  "JS encodeURIComponent: " + jsEncodeURIComponent + "\n" +
  "Java URLEncoder.encode: " + javaURLEncoder);

答案 1 :(得分:0)

发现应该替换另外一个角色 .replace(/ \ $ / g,“%24”)