如何使用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 中的内置函数(例如 btoaatob)不支持 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 服务失败反序列化?

如何将复杂模型从客户端传递到服务器?

如何使用 AJAX 将数据从视图传递到控制器

如何使用 AJAX 请求将用户在类变量中的 HTML5 位置从 JavaScript 传递到 Rails 控制器?

gomain函数中如何动态获取数据

导出为 pdf 时如何正确呈现印地语?