php - 使用从 mysqli php 到 MySql 数据库的 http 请求在 Ionic2 TypeScript 应用程序中检索希伯来语
问题描述
我正在尝试弄清楚如何获取Hebrew
字符。在我的connection.php
我有 $con->set_charset('utf8');
,所以字母出现在输入字段中并正确记录在MySql
数据库中connection.php
:
<?php
header("Access-Control-Allow-Origin: *");
header('Content-type: text/xhtml; charset=windows-1255');
$con = new mysqli('localhost:XXXX', 'user', 'password');
$con->set_charset('utf8');
if (!$con)
{
echo 'Not Connected To Server';
}
if (!mysqli_select_db ($con, 'mydb'))
{
echo 'Database Not Selected';
}
?>
但是在几个地方,似乎当我试图从列表中获取它时,例如下面的home.ts
this.function();
http
请求,它看起来是这样的:
function() {
var headers = new Headers();
headers.append('Content-Type', 'application/x-www-form-urlencoded');
let options = new RequestOptions({ headers: headers });
let postParams = '&user=' + this.user;
this.http.post(this.phpPath + "select.php", (postParams), options)
.subscribe(data => {
var nmb = (data.text().split(".").length);
let x = data.text().split(".");
for (var i = 0; i < nmb; i++) {
var c = x[i];
this.list.push({ id: i, name: this.s + c }, );
}
}, error => {
console.log(error);
});
}
特殊select.php
用途connection.php
:
<?php
require 'connection.php';
$user = mysqli_real_escape_string($con, $_POST["user"]);
$sql = "SELECT name FROM tab where user='".$user."'";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo $row["name"].'.';
}
} else {
echo "0 results";
}
mysqli_close($con);
?>
我试图添加 <meta charset="UTF-8">
到home.html
,但index.html
已经包含它。而且我还尝试home.html
使用用 编码的记事本保存UTF-8
,但没有任何帮助。
header(‘Content-type: text/xhtml; charset=windows-1255’);
已经在connection.php
,结果我在MySql
其他http
请求和.php
后端的数据库记录中有希伯来语字符。
例如应用程序中的输入:
或在 MySql 表中:
但这不会影响按钮,以及同一应用程序 UI 中具有相同的其他几个位置connection.php
,例如特定代码中的这个:
如果没有header(‘Content-type: text/xhtml; charset=windows-1255’);
,它看起来是这样的:
或在应用中:
但它不同于:
我不太明白,我做错了什么,必须改变 with XHTML
, sendUTF-8
和 promise windows-1255
,但我尝试以不同的方式返回它,作为请求中的json
from select.php
with 数组。$myArray[] = $row;
let obj: MyObj = JSON.parse(data.text());
http
在结果控制台中:
\u05d0\u05d1\u05d2\u05d3
并且object
是undefined
我找到了这个stackoverflow 答案,它说旧式ASCII
属性列表只允许ASCII
字符,并且我有一个字符串的打印描述。也许这是一个原因,但我不确定,如何做到这一点Ionic2
TypeScript
编辑1:
我connection.php
用 $con->set_charset('utf8mb4');
而不是编辑过utf8
,而且我用过 $con->query("SET collation_connection = utf8mb4_unicode_520_ci");
:
$con = new mysqli('host', 'user', 'password');
$con->set_charset('utf8mb4');
$con->query("SET collation_connection = utf8mb4_unicode_520_ci");
MySql
服务器上的数据库行是utf8_general_mysql500_ci
,其中包含希伯来字符记录,并在应用程序的其他地方按请求检索。
我不确定,如何设置<meta charset=UTF-8>
页面Ionic2
html
,它已经在<head>
projectindex.html
中。添加到home.html
或任何其他页面<ion-header>
,没有任何改变。
在\u05d0\u05d1\u05d2\u05d3
现在的情况下,echo json_encode($myArray, JSON_UNESCAPED_UNICODE);
似乎返回带有英文json
名称的正确字符串,但希伯来语仍在Mojibake
. 无论如何,为了避免Unicode codepoints
,在我的情况下,获得 echo 就足够了,因为请求中$row["name"].'.';
没有数组和对象。http
但我不确定,该怎么办Mojibake
编辑2:
显示创建表,name
列包含希伯来语:
CREATE TABLE `band` (
`ID` int(20) NOT NULL AUTO_INCREMENT,
`name` varchar(300) COLLATE utf8_general_mysql500_ci NOT NULL,
`style` varchar(100) COLLATE utf8_general_mysql500_ci NOT NULL,
`member` text COLLATE utf8_general_mysql500_ci NOT NULL,
`zone` varchar(300) COLLATE utf8_general_mysql500_ci NOT NULL,
`region` varchar(100) COLLATE utf8_general_mysql500_ci NOT NULL,
`website` varchar(800) COLLATE utf8_general_mysql500_ci NOT NULL,
`image` varchar(2083) COLLATE utf8_general_mysql500_ci NOT NULL,
`user` varchar(700) COLLATE utf8_general_mysql500_ci NOT NULL,
`num` varchar(200) COLLATE utf8_general_mysql500_ci NOT NULL,
`registration` varchar(300) COLLATE utf8_general_mysql500_ci NOT NULL,
PRIMARY KEY (`ID`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_general_mysql500_ci
编辑 3:
<?php
require 'connection.php';
$user = mysqli_real_escape_string($con, $_POST["user"]);
$sql = "SELECT name, HEX(name) AS hex_name FROM tab where user='".$user."'";
$result = mysqli_query($con, $sql);
if (mysqli_num_rows($result) > 0) {
while($row = mysqli_fetch_assoc($result)) {
echo $row["name"], ' ', $row["hex_name"], '.';
}
} else {
echo "0 results";
}
mysqli_close($con);
?>
结果:
编辑4:
结果与文本:
在文本中:
׳׳‘׳’׳“
׳׳•׳¨ ׳¢׳§׳™׳‘׳
׳׳׳•׳ ׳™ ׳™׳¦׳—׳§
从控制台复制:
在数据库中:
作为希伯来文:
אבגד
אור עקיבא
אלוני יצחק
同时在另一个页面中对同一个表和记录的另一个请求,控制台:
在应用程序中:
解决方案
推荐阅读
- r - Find cell match if it is followed by another cell match
- java - 删除 BottomNavigationView 图标和中心标题
- c# - MVC 验证属性不起作用
- python - CNN外部窗口
- java - 使用 jar 文件名列表生成 maven 依赖项
- java - Why Doesn't Login Page In Vaadin Show Up When I'm Using Spring Security
- php - Results different when running query in phpmyadmin and on website
- visual-studio-code - VS Code folder structure layout
- python - How to create collections dynamically and insert json file's data in to each of them
- python - Odoo13 to_date 给出 False