gpt4 book ai didi

php - MySQL位数据类型php打印unicode怎么来的?

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:47:55 25 4
gpt4 key购买 nike

当我的 MySQl 数据类型是 bit(1) ,但是当用 php json_encode 打印时会用 unicode 写? IIS 运行良好,
但在我的专用服务器中,Apache 托管将变成 unicode。为什么? enter image description here

可以看到LocatingLocating在Mysql数据类型上是bit,但是打印出来的是\u0001?为什么?

这是我的编码 GET 方法 get-googlemarker.php 来获得这个结果

<?php
mysql_connect("localhost", "root", "123456") or die("Could not connect");
mysql_select_db("db_gps") or die("Could not select database");

$parent_id = $_GET['mainid'];

$query = "SELECT *
FROM tbl_locate AS a
INNER JOIN
(
SELECT MainID, Max(DateTime) AS DateTime
FROM tbl_locate
GROUP BY MainID
) AS b
ON a.MainID = b.MainID
AND a.DateTime = b.DateTime
LEFT JOIN
(
SELECT b.PicData
, b.PicUploadedDateTime
, b.MainID
FROM (SELECT MainID,Max(PicUploadedDateTime) as PicUploadedDateTime
FROM tbl_picture
group by MainID
) l
JOIN tbl_picture b
ON b.MainID = l.MainID AND b.PicUploadedDateTime = l.PicUploadedDateTime
) AS c
ON a.MainID = c.MainID";

$rs = mysql_query($query);

$arr = array();
while($obj = mysql_fetch_object($rs)) {
$arr[] = $obj;
}

echo json_encode($arr);


?>

已更新

表示数据是正确的,但问题是当我使用下面的 javascript 时,我无法读取定位值,我试过 alert 记录,但是是空白的。我试过 Locating with type:string , type:bit , type:字节 , type:int ,
但不起作用。无法在 alert

中显示任何内容
Ext.define('GoogleMarkerModel', {
extend: 'Ext.data.Model',
fields: [
{name: 'ID', type: 'int'},
{name: 'Locating', type: 'int'},
{name: 'MainPower', type: 'int'},
{name: 'Acc', type: 'int'},
{name: 'PowerOff', type: 'int'},
{name: 'Alarm', type: 'int'},
{name: 'Speed', type: 'int'},
{name: 'Direction', type: 'int'},
{name: 'Latitude', type: 'float'},
{name: 'Longitude', type: 'float'},
{name: 'DateTime', type: 'datetime'},
{name: 'MainID', type: 'int'},
{name: 'IOState', type: 'int'},
{name: 'OilState', type: 'int'},
{name: 'PicUploadedDateTime', type: 'datetime'},
{name: 'PicData', type: 'str'}
]
});

最佳答案

变量的表示仍然是正确的。

自 PHP 5.4 起,您可以将选项 JSON_UNESCAPED_UNICODEjson_encode() 一起使用。参见 http://php.net/manual/en/function.json-encode.php

我的猜测是您的 IIS 默认返回未转义的值。

在 Javascript 中,您通常会使用 parseInt(\u0001) 或其他东西。因为它是 extjs,所以我不知道。

B 计划:

A) 将数据库列从位更改为整数。

B) 在 php 中转换数据库值

while($obj = mysql_fetch_object($rs)) {
$obj->Locating = (int)$obj-Locating;
// or try with (string) if (int) fails
$arr[] = $obj;
}

C) 在 json 输出中简单地 str_replace:

$json = json_encode($arr);
$json = str_replace('"\u0001"', '"1"', $json);
$json = str_replace('"\u0000"', '"0"', $json);

关于php - MySQL位数据类型php打印unicode怎么来的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18003834/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com