[英]how to pass hindi fonts from clients to server using ajax request
我正在使用 ajax 请求将值从客户端发送到服务器端,以使用 ajax 请求插入到 mysql 数据库中。 该值以印地语表示(हिन्दी मतलब जाने)。 但是在客户端,当我提醒它时,我得到了如上所示的印地文文本,但在处理服务器端请求后,它会以%u0939%u093F%u0928%u094D%u0926%u0940 %u092E%u0924%...
插入到数据库中%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']);
但我仍然无法按原样在数据库中插入印地文文本。 请帮我怎么办?
为了插入您的数据库,您可以尝试使用 UTF8 和 COLLECTION UTF8 GENERAL 使用这些设置数据库
一个用于显示语言的印地语,您可以将其放在您的页面 HTML 上:下一个:
<meta content="text/html; charset=utf-8" http-equiv="Content-Type" />
对于特殊字符和其他语言,您可以使用 utf8
使用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;
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.