【问题标题】:Lost accent characters php丢失重音字符php
【发布时间】:2016-07-21 16:42:03
【问题描述】:

下午好,我有一个 Python 脚本可以从 PHP 运行它。该脚本对数据库进行查询并返回一个 JSON 对象:

[{"ESC_DEF": 0, "ESC_EJE": 2017, "ESC_FEC_PRE": null, "ESC_USU_BAJA": null, "ESC_NOM": "prueba fran 3", "ESC_SIT": "ABIERTO", "ESC_USU_ALTA": "hep68", "RONDA_ID": 1, "ESC_ORI": "Gestión Económica", "ESC_SIT2": "BORRADOR", "ESC_FEC_FRCG": null, "ESC_TPO": "PRESUPUESTO", "ESC_ORG": "1214", "ESC_FEC_ALTA": "19/07/2016 10:39:20", "ESC_FEC_FIR": null, "CRE": 0.00, "ID_PTOEGE": null, "ESC_FEC_BAJA": null, "ESC_COD_BAJA": null, "ID": 3637, "EST_ORG_NOM": null}]

我使用的命令是:

son_output = json.dumps((my_query), default=custom_json, ensure_ascii=False)`

在 PHP 中,我运行并获取结果如下:

exec('python3 sqlserver.py'. " ".$parametro, $output, $ret_code);
$json = implode($output);
echo utf8_encode(stripslashes($json));

但内容显示如下:

"ESC_ORI": "Gestixc3xb3n Econxc3xb3mica"

重音字符显示不正确。

对不起,如果我用英语表达得不好。

【问题讨论】:

  • 你检查问题出现在哪一步了吗?
  • 如果我从终端运行脚本,结果是想要的,但是 php 的输出并没有显示相同的结果

标签: php python json utf-8


【解决方案1】:

"\xc3\xb3" 是 "ó"。在使用 stripslashes($str) 删除斜线时,您也会丢失 unicode 转义,因此只会得到奇怪的字符而不是您正在寻找的小拉丁 o。不精通php,但尝试在没有该功能的情况下运行。

【讨论】:

  • 感谢您的回答,如果我运行如下: $json = implode($output);回声($json);我得到: Gesti\xc3\xb3n Econ\xc3\xb3mica 如果我删除以下行,PHP 什么也不显示: json_output = json_output.encode('utf-8')
  • 如果我运行如下: json_output = json_output.encode('utf8') ,我得到 ESC_ORI": "Gesti\\u00f3n Econ\\u00f3mica
  • 好吧,再多读一些,我会说我在这个方面错了。编解码器总是让我着迷。认为您的解决方案是改用 php.net/manual/en/function.utf8-decode.php 函数,因为 python 已经将它作为 utf-8 我猜我们不想再次对其进行编码。
猜你喜欢
  • 1970-01-01
  • 2013-06-09
  • 1970-01-01
  • 2018-07-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-23
相关资源
最近更新 更多