Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/273.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP CLI:UTF8问题_Php_Utf 8_Command Line Interface - Fatal编程技术网

PHP CLI:UTF8问题

PHP CLI:UTF8问题,php,utf-8,command-line-interface,Php,Utf 8,Command Line Interface,我正在编写一个PHP CLI应用程序;在我的应用程序中,我想处理一些数组到json的操作 让我们举一个例子: $test = array( 'bla' => 'äöü' ); $test['bla'] = htmlentities( $test['bla'] ); echo json_encode( $test ); 输出如下: {"bla":"äöü"} 如果我用这个来处理我的数组 function encode_items(&

我正在编写一个PHP CLI应用程序;在我的应用程序中,我想处理一些数组到json的操作

让我们举一个例子:

$test = array( 'bla' => 'äöü' );
$test['bla'] = htmlentities( $test['bla'] );

echo json_encode( $test );
输出如下:

{"bla":"äöü"}
如果我用这个来处理我的数组

function encode_items(&$item, $key)
{
    $item = utf8_encode($item);
}
array_walk_recursive($rows, 'encode_items');
我得到了这样的东西:

2\u20ac
我能在这里做什么?我读了一些关于更改php.ini的内容——我真的必须这样做吗?或者我可以在代码中做些什么来让这些内容正常工作吗


非常感谢:-)

答案取决于你最后想做什么,你还没有说清楚。如果这真的“只是”关于json编码您在代码中定义的错误,那么您不需要像
htmlentities()
之类的东西。只需确保您的代码文件是以UTF-8编码编写(保存)的(确保确实如此,例如通过使用hexeditor进行检查),并使用php json编码函数即可。无需特定编码,因为您没有用于拯救数据的传输布局。你好,arkascha,感谢您的回复。文件以UTF-8的id保存(控制台显示:text/x-c++;charset=UTF-8)。我的任务是:从模型(mysql)中获取信息并使用它们。然后使用结果(数组)并将其转换为json。这个json必须再次存储在另一个数据库中;但在再次保存之前,这个json会发生一些事情:store函数的一个方法检查一些键,如“%”和“€”,并使用它们进行计算。如果json使用2\u20ac而不是“2€”,则这些计算不起作用。好的,在这种情况下,您还必须确保您的数据库通信是基于UTF的,因此连接、数据库和表定义以及输入的实际数据都是基于UTF的。如果这一切都很好,那么正如前面所说:只要使用
json_encode()
,一切都应该很好,不需要转换,相反,这只会因为多次转换而产生问题。关于“json使用什么编码”:答案是:无。json根本没有定义字符编码。json只是一个字符串,不管它是用什么编码创建的。因此,
2\u20ac
是脚本前面某个步骤创建的转义序列,而不是通过json编码某个字符串(除非做错了)。因此,停止创建这样的序列,停止转换,json字符串中就不会有这样的内容。哦,还有最后一件事:不要相信在查看数据时显示的内容,大多数可视化实际上(尝试)解释有效负载,通常是错误的。相反,要确保将输出转储到一个文件中,然后检查该文件,如前所述:hexeditor是我所知道的唯一可靠的工具(用于调试和真正确保)。