【问题标题】:How to fetch utf parameter from url?如何从 url 获取 utf 参数?
【发布时间】:2013-08-01 09:43:18
【问题描述】:

我从包含 utf 字符(如 Ž、ć 等)的服务器单词中获取...... 我输入了 url 参数,我的 url 看起来像 ?id=229&name=%8eena%20mini%3f

我正在使用 js 函数从 url 获取参数

function getURLParameter(name) {
    name = name.replace(/[\[]/, "\\\[").replace(/[\]]/, "\\\]");
    var regex = new RegExp("[\\?&]" + name + "=([^&#]*)"),
        results = regex.exec(location.search);
    return results == null ? "" : decodeURIComponent(results[1].replace(/\+/g, " "));
}

它解析第一个 id 参数,但在第二个(当我在 url 中编码之前有 utf 时)它会中断。

var id = getURLParameter('id');//works
var id = getURLParameter('name');//breaks when have utf

当它有来自 url 的 utf 时如何获取该参数? (在页面上我有<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">

【问题讨论】:

  • “它坏了”是什么意思?会发生什么?
  • 您的编码已损坏; %8eena%20mini%3f %8 代表什么?它无效.. encodeURIComponent("Žeena mini?") === "%C5%BDeena%20mini%3F" 可以很好地解码
  • decodeURI((RegExp(name + '=' + '(.+?)(&|$)').exec(location.search)||[,null])[1])

标签: javascript url character-encoding get


【解决方案1】:

Žena 编码为%8eena 的代码不是使用UTF-8 编码,而是使用Windows-1252 编码,因为Ž 在该字符集中表示为8e

在 UTF-8 中,Ž 表示为 c5 bd,因此如果表单具有正确的编码,您应该期望您的 URL 包含 %c5%bd

看起来您需要上一页上的<meta charset="utf-8">,或者至少您提交的表单上的属性accept-charset="utf-8"

另请参阅:Is there any benefit to adding accept-charset="UTF-8" to HTML forms, if the page is already in UTF-8?

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-06-01
    • 2017-03-27
    • 2020-01-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多