【发布时间】:2018-01-14 14:21:45
【问题描述】:
我有一个通过 PHP exec 调用的 Java 应用程序。 Java在命令行显示中点:“·”
但是当在 utf-8 html 页面中从 PHP 调用代码时,我有一个“?”而不是“·”。
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
</head>
<body>
<form method="post" action="essai2.php">
<input type="text" name="texte" />
<input type="submit" value="Valider" />
</form>
<?php
echo "input text : ".$_POST['texte'];
exec("/usr/bin/java -jar runner.jar ".$_POST['texte'], $variable);
echo "<br>output text : ".$variable[0];
?>
</body>
</html>
有什么线索吗? (我试过htmlentities,htmlspecialchars。命令行上的文本文件是utf-8)
为了更好地理解这个问题: 在命令行我做
java -jar runner.jar "le agriculteur est mort"
我明白了
[le·la, agriculteur·trice, est, mort]
在网络服务器上我得到
[le?la, agriculteur??trice, est, mort]
所有这些的十六进制代码(遵循 Rick James 的评论)是:
5b6c653f6c612c206167726963756c746575723f3f74726963652c206573742c206d6f72745d
希望对你有帮助
【问题讨论】:
-
该代码中的中间点在哪里??
-
应该在变量“$variable[0]”中
-
所以我根据stackoverflow.com/questions/1605760/…修改了php.ini和apache conf,但没有结果。 ://
-
echo bin2hex($variable[0]); -
var_dump($variable) => array(1) { [0]=> string(38) "[le?la, agriculteur??trice, est, mort]" } echo bin2hex($变量[0]); => 5b6c653f6c612c206167726963756c746575723f3f74726963652c206573742c206d6f72745d