我收到此警告,php返回null。
PHP警告:json_encode():参数中的UTF-8序列无效 第26行/var/www/rreadyreckoner/get_instruction.php {"导致":[{"指令":空}]}
我正在尝试运行这个php脚本。
<?php
include "demo_config.php";
$con = mysqli_connect($server_name,$mysql_user,$mysql_pass,$dbname);
if(!$con)
{
echo "Connection Error".mysqli_connect_error();
}
else{
//echo "";
}
$query ="SELECT instruction FROM `rreadyreckoner` ORDER BY id DESC LIMIT 1;";
$res = mysqli_query($con,$query);
$result = array();
while($row = mysqli_fetch_array($res))
{
array_push($result,
array('instruction'=>$row[0]));
}
if(!$result)
{
echo "Nothing to display";
}else
{
echo json_encode(array("result"=>$result));
}
mysqli_close($con);
?>
我做的唯一改变是在mysql数据库中插入内容时删除了一个默认插入的字符,并将其替换为空。
$instruction =$_POST["instruction"];
$plainHTML = str_replace(chr(194),"",$instruction);
$sql = "INSERT INTO rreadyreckoner (id, instruction)
VALUES (NULL, '$plainHTML')";
在此之前,我得到了适当的回应。 任何帮助或建议表示赞赏。谢谢。
答案 0 :(得分:1)
只需添加:
<LinearLayout
android:id="@+id/camera_preview_holder"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<LinearLayout
android:id="@+id/camera_preview"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_weight="1"
android:orientation="vertical" >
</LinearLayout>
</LinearLayout>
在mysqli_set_charset($con, "utf8");
之后。
答案 1 :(得分:0)
$t = json_encode($s, JSON_UNESCAPED_UNICODE);
避免\u....
内容。
请勿使用mb_encode
等
194
是十六进制C2
,这是utf8序列中常见的第一个字节。
有关需要完成的工作的更多讨论,请参阅Trouble with utf8 characters; what I see is not what I stored。特别是,检查SELECT HEX...
技术以查看数据是否正确存储。
回到标题...你能提供你正在处理的无效序列吗?您可以执行echo bin2hex(...)
之类的操作来获取顽皮字符串的十六进制。