如何使用ajax请求将印地语字体从客户端传递到服务器
Posted
技术标签:
【中文标题】如何使用ajax请求将印地语字体从客户端传递到服务器【英文标题】:how to pass hindi fonts from clients to server using ajax request 【发布时间】:2016-02-01 22:15:06 【问题描述】:我正在使用 ajax 请求将值从客户端发送到服务器端,以使用 ajax 请求插入 mysql 数据库。该值使用印地语 (हिन्दी मतलब जाने)。但是在客户端,当我提醒它时,我会得到如上所示的印地语文本,但在处理服务器端请求后,它会以%u0939%u093F%u0928%u094D%u0926%u0940 %u092E%u0924%...
我在客户端用过
request1h[k].setRequestHeader("Content-Type","application/x-www-form-urlencoded;charset=utf-8;");
request1h[k].send(requestDatah);
并在服务器端使用 php 标头
<?php header("Content-Type: text/html; charset=utf-8");
mysqli_set_charset($con,"utf8");
然后我阅读了有关 utf8_encode 并在帖子值上也使用了它
$value1 = utf8_decode($_POST['values']);
但我仍然无法在数据库中插入印地语文本。请帮我做什么?
【问题讨论】:
在你的服务器部分当你转储var_dump($_POST);
时能够看到印地语文本...?
这可能会帮助你***.com/questions/11292898/…
实际上问题只出在使用 ajax 时的服务器端。如果我不使用 ajax,我可以正确使用它而不会出现任何错误
javascript 字符串是 16 位 unicode,因此是 uxxxx
形式。 %
来自 application/x-www-form-urlencoded
触发的 url 编码,但 PHP 应该能够处理它。所以试试 UTF-16。
@deamentiaemundi:它不工作
【参考方案1】:
对于在您的数据库中插入,您可以尝试使用这些 使用 UTF8 设置数据库并收集 UTF8 GENERAL
一个显示语言印地语,你可以把你的页面 HTML : 下一个:
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
对于特殊字符和其他语言,您可以使用 utf8
【讨论】:
【参考方案2】:使用btoa
函数对base-64中的字符串进行编码:它将值作为字符串返回,表示编码为base-64
的字符串。
默认情况下,JavaScript 中的内置函数(例如 btoa
和 atob
)不支持 Unicode 字符串,因为这两个函数都将其所有字符视为 16 位编码字符串。所以你必须先使用encodeURIComponent
函数。
base64_encode = function(str = "")
return btoa(unescape(encodeURIComponent(str)));
;
function log(message)
var client = new XMLHttpRequest();
client.onreadystatechange = function()
if (this.readyState == 4 && this.status == 200)
json = JSON.parse(this.response);
console.log(json.form);
;
client.open("POST", '//httpbin.org/post');
client.setRequestHeader('Content-type', 'application/x-www-form-urlencoded');
client.send(message);
data = "key_name=" + base64_encode("हिन्दी मतलब जाने");
log(data);
如果您需要将该 base64 解码为您发布数据的 PHP 文件中的值,请使用:
// this will return 'हिन्दी मतलब जाने'
$value = base64_decode($_POST['key_name']);
并且当你向数据库输入数据时,请确保你的表中的字符集utf8_general_ci
必须设置。
如果这是您的问题,您可以使用以下查询转换表:
ALTER TABLE `YOUR_TABLE_NAME` CONVERT TO CHARACTER SET utf8 COLLATE utf8_general_ci;
【讨论】:
以上是关于如何使用ajax请求将印地语字体从客户端传递到服务器的主要内容,如果未能解决你的问题,请参考以下文章
将数据从 jquery ajax 请求传递到 wcf 服务失败反序列化?