【问题标题】:Textbox with UTF-8 input带有 UTF-8 输入的文本框
【发布时间】:2011-11-07 22:27:52
【问题描述】:

我正在对网站进行国际化,我需要允许用户在搜索文本框中输入中文字符。该文本最终将在后端进行分析,因此我需要确保我可以接受通过 javascript 编码为 UTF-8 的文本(一切都通过 AJAX 完成)。出于测试目的,我每次搜索完成时都会弹出一个警告框,其中包含我输入的文本,当输入一些中文文本时,我会返回“未定义”。使用英语,我输入的单词会按预期返回。如何确保文本框中的所有文本都使用 UTF-8 编码?

【问题讨论】:

  • 有什么代码或什么您想与我们分享,或者我们应该尝试在这里应用一些 oracle 技能?我不记得我的魔法水晶球放在哪里了,它可以让我阅读其他人的思想/源代码。

标签: javascript html utf-8


【解决方案1】:

确保以下几点:

  1. 您的 HTML 和 JS 文档采用 UTF-8 编码。
  2. 您正在为 HTML 和 JS 文件发送具有适当 (UTF-8) 值的 Content-type 标头。
  3. 在您的 HTML 中定义的元标记字符集也相应地是 UTF-8。
  4. 避免使用内置的escape方法;它不支持 UTF-8(多字节字符)。

【讨论】:

  • 既然 OP 说“一切都是通过 AJAX 完成的”,那么是否还需要在 XHR 请求标头中指定Content-type:...;charset=UTF-8
  • 见#2。我没有指定初始页面请求。任何时候从服务器请求内容,它都应该是 UTF-8 编码的。只要内容是 UTF-8 编码并通过 HTTP 传输,就应指定适当的 Content-type 标头。
  • 正如所写,在我看来,为页面提供的 HTML 以及作为<script src=...> 的结果提供的任何 JS 都需要具有该标头,但没有提及 @987654324 @.
  • 没有正文的 HTTP 请求(例如,每个 GET 请求,包括对 JS 文件或通过 XHR 对象发出的请求)不应指定 Content-type 标头(尽管欢迎他们指定 Accept-字符集标题)。
  • 我假设他不打算通过幂等方法发送文本框的内容,这通常意味着 POST,这意味着需要通过服务器可以编码的内容体处理。我想如果是搜索,幂等可能没问题。
【解决方案2】:
   <head>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
   </head> 

html5

<meta charset="UTF-8" />

这将对整个页面进行编码。

【讨论】:

  • 不,不会的。但是,它会告诉浏览器(可能是错误的)您的文档是 UTF-8。而且您永远不需要使用前一种格式; HTML5 只是名称和标准化方面的新内容。
  • 我在 1 个文件中有 utf8 no-bom 编码的 php、html 和内联 js,我可以用 meta charset=utf8 标签提醒任何中文字符。显然在字符串操作后发出警报可能会让你失望,因为字符串函数不知道 mb,这就是为什么有 mb_strlen 等,显然没有人强迫你使用任何东西..
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-15
  • 1970-01-01
  • 2015-08-16
  • 1970-01-01
  • 2016-02-25
相关资源
最近更新 更多