繁体   English   中英

如何使用ajax请求将印地语字体从客户端传递到服务器

[英]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 中的内置函数(例如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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM