[英]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.