【问题标题】:PHP script errors when running in Windows console, no errors in browsers or Linux console在 Windows 控制台中运行时出现 PHP 脚本错误,在浏览器或 Linux 控制台中没有错误
【发布时间】:2012-12-02 10:53:50
【问题描述】:

error_reporting(E_ALL);
ini_set('display_errors', true);
ini_set('log_errors', true);

当我从浏览器运行脚本时,一切都按预期进行,没有错误。从 Linux 控制台运行它时也是如此。但是,当我从 Windows 命令提示符运行完全相同的脚本时,尝试将一些记录插入数据库时​​出现错误。显然,这些错误与 Unicode 字符有关:

Incorrect string value: \'\\xC5 ANA\' for column \'name\' at row 1
Windows 控制台输出:IZP─ĆRDO┼ ANA
但实际的文字是:IZPĀRDOŠANA

可能是什么原因造成的以及如何解决? Windows 命令提示符如何影响正在处理的数据?

【问题讨论】:

  • 可能是 Windows 控制台显示输出的字体的问题。您可以将 Windows 控制台字体设置为 Lucida 控制台。该字体应该能够处理宽/unicode字符。
  • 我不是在问它如何显示字符...
  • 显示您用于插入的代码以及脚本的输入艺术。
  • 您在服务器日志中看到错误了吗?
  • 我当然会在错误日志中看到它们。代码不是问题,它是一个使用参数执行的简单 PDO PreparedStatement。我只是问如果从另一个网站下载数据,而不是从 cmd args 获取,Windows 控制台如何影响数据。

标签: php unicode windows-console


【解决方案1】:

似乎您的 Windows 控制台未设置为正确的代码页..

如果你这样做:

chcp

你看到了吗

Active code page: 775

?

无论如何,您可以将代码页设置为 UTF-8:

chcp 65001

【讨论】:

  • 是的,它是 775。我将其更改为 65001 并尝试再次运行脚本,仍然显示相同的无效字符...我知道数据是 UTF-8,因为它是从 XML 解析的如果找到非 UTF-8 内容,解析器会立即尖叫。
  • @jurchiks 我明白了,那时您将不得不使用其他一些工作。 chcp 65001 是这里唯一的希望:P
  • 顺便说一句,有没有办法保留该代码页?当我关闭命令提示符时,它变回 775。
  • @jurchiks 取决于操作系统区域设置,775 用于拉脱维亚语、立陶宛语和爱沙尼亚语。可能在控制面板语言设置的某个地方...我可以查一下。例如,我有 850 个。
  • @jurchiks 嘿,看看这个superuser.com/a/269857 确保你仔细阅读它(包括 cmets),这样你就不会破坏你的系统或任何东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-09
  • 2019-12-22
  • 2021-08-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多