我成功地使用了最新的树脂罐(来自http://www.caucho.com/download/),让我可以在我的 Grails Web 应用程序中使用遗留的 PHP 代码。除了非 ASCII 字符集之外,一切都很好。
这些字符显示为问号,看起来像这样: ???? ?? ???.
我尝试了许多解决方案:
从将 php.ini 设置为utf8,到确保extension=php_mbstring.dll
包含在 php.ini 中。我还确保 MySQL 数据库配置为执行 utf-8。存储在数据库中的字符在 phpMyAdmin 中正确显示。
另外,我可以做一个die("BLAH")
,其中BLAH是非 ASCII 文本,它会正确输出到浏览器。我的浏览器在所有页面上显示内容标题 utf-8。
另一个关键是我能够在 Grails 中运行 PHP 代码库,并在同一台机器上的WAMP服务器中运行它,连接到同一台 MySQL数据库,它可以很好地输出非 ASCII 字符。
我的感觉是,这是从 MySQL 到在 Grails 中运行的 PHP 的数据传输问题(请记住,它可以从 MySQL 到在 WAMP 中运行的同一 PHP)。在这两种情况下,我什至mysql_query("SET NAMES 'utf8'")
在运行查询之前都在执行。
我也尝试过获取 WAMP php.ini 文件并在 Grails 中使用它,而 Grails PHP 仍然无法正常运行……我的一部分认为 Grails 中的 PHP 没有读取 php.ini 文件,并且正在依赖一些默认的 php.ini (我不知道)。
例如,如果我将 Grails php.ini 文件设为空文件,Grails 仍然可以正常启动,并且可以渲染 php 页面。但是如果我将 php.ini 设置为像“asdfasdf”这样的垃圾文本,Grails 将无法启动......所以这让我相信它正在看到 php.ini......
附加信息:
- MySQL 版本:5.0.22
- Grails 中的 PHP 版本(树脂/Quercus):5.3.2
- WAMP 中的 PHP 版本:5.1.4
- Grails 2.2版
我已经尝试了我在网上找到的所有东西,但没有运气......感谢您的帮助!