`
nbzx
  • 浏览: 12852 次
  • 性别: Icon_minigender_1
  • 来自: 宁波
文章分类
社区版块
存档分类
最新评论

quercus-4.0.1(java下的php)中文编码的bug解决方法

阅读更多
很喜欢这个java下的php环境,可惜一直bug一大堆,好不容易盼来4.0,中文编码问题还是很多,大致解决了几个。

1.unicode编码第三个字符错位问题,一个低级错误,估计是copy了一行忘了改,哈
    com.caucho.vfs.ReaderStream 111行
buf[i++] = (byte) (0x80 | ((ch >> 6) & 0x3f));

改为
buf[i++] = (byte) (0x80 | ((ch) & 0x3f));


2.xml_parse_into_struct中文问题
    com.caucho.quercus.lib.xml.Xml 439~441行都注释掉
    //if (_xmlString.isUnicode())
    //  is = new InputSource(_xmlString.toReader("utf-8"));
    //else
      is = new InputSource(_xmlString.toInputStream());


3.PDO中文sql查询乱码问题
  com.caucho.quercus.lib.db.PDO 151行改为
  private static String ENCODING = "UTF-8";


4.类成员变量名编码问题,这个问题比较严重,会影响__get魔术方法的使用
    com.caucho.quercus.parser.ClassScope 112行改为
_cl.addValue(new UnicodeValueImpl(name), value, visibility, comment);


另外还有stream_get_contents有编码问题,可以用file_get_contents代替着用。
还有很傻的_SERVER数组访问时不能加引号的问题,小问题还是很多,懒得去改了。
分享到:
评论
6 楼 developerworks 2010-05-25  
世界如此悲哀,绕了一大圈儿,把中文问题解决了.

http://wi-fizzle.com/downloads/base64.sql
创建BASE64_ENCODE和BASE64_DECODE函数

插入的时候先BASE64_ENCODE,查询的时候BASE64_DECODE进行查询

例如:

插入:
$sql = "insert into enc values(null, '我的邮件是xxxxxx@163.com')";


查询:

$sql = "select * from enc where BASE64_DECODE(base64) like '%邮件%';";


查询不可能每次都手动去加这么一个函数,最好封装一下.


很可笑的解决方案.

哈哈哈

5 楼 developerworks 2010-05-16  
nbzx 写道
banxitan 写道
还有一个更让人郁闷的问题,Mysq数据操作,insert select出来的都是乱码!!!


这个肯定是配置问题吧,mysql库尽量用utf-8,web.xml里连接参数也设成一样的
	<database jndi-name="jdbc/mysql">
	   <driver type="org.gjt.mm.mysql.Driver"><!--com.mysql.jdbc.Driver-->
			<url>jdbc:mysql://localhost:3306/db_name</url>
			<user>root</user>
			<password></password>
			<init-param useUnicode="true"/>
			<init-param characterEncoding="utf-8" />
		</driver>
		<prepared-statement-cache-size>50</prepared-statement-cache-size>
		<max-connections>100</max-connections>
		<max-idle-time>30s</max-idle-time>
	</database>



这个配置试过了,页面本身的中文是能够显示的,但是从MySQL出来的数据,死活不能正常显示.乱码一堆.
4 楼 developerworks 2010-05-16  
com.caucho.vfs.ReaderStream 修改了111行.
编译,并替换原来的ReaderStream.class,之前还能运行的程序,现在无论到那个页面全都是错误.

是否可以在PHP中调用Java代码,把生成的数据库结果集转码之后再输出,Google了N久之后,还是没有找到比较好的解决办法.
3 楼 jammy.zhou 2009-12-28  
也在quercus.
我用bean从DB中读取的数据,DB连接是GBK的,在php中做echo也是乱码.
不得不这样转一下:
new String(str.getBytes("GBK"), "ISO-8859-1");

请教楼主,有何好办法.直接输出中文;
2 楼 nbzx 2009-09-25  
banxitan 写道
还有一个更让人郁闷的问题,Mysq数据操作,insert select出来的都是乱码!!!


这个肯定是配置问题吧,mysql库尽量用utf-8,web.xml里连接参数也设成一样的
	<database jndi-name="jdbc/mysql">
	   <driver type="org.gjt.mm.mysql.Driver"><!--com.mysql.jdbc.Driver-->
			<url>jdbc:mysql://localhost:3306/db_name</url>
			<user>root</user>
			<password></password>
			<init-param useUnicode="true"/>
			<init-param characterEncoding="utf-8" />
		</driver>
		<prepared-statement-cache-size>50</prepared-statement-cache-size>
		<max-connections>100</max-connections>
		<max-idle-time>30s</max-idle-time>
	</database>

1 楼 banxitan 2009-09-25  
还有一个更让人郁闷的问题,Mysq数据操作,insert select出来的都是乱码!!!

相关推荐

    quercus-4.0.37.war

    基于Java 的 PHP 框架 4.0.37 版本,解压后放入放入web服务器,在该目录下即可运行php,具体请自己找文档。

    quercus-4.0.39.war

    官方地址http://quercus.caucho.com/

    quercus-4.0.39-src.jar

    script-api.jar、php-script.jar、JavaBridge.jar、php-servlet.jar四个jar包

    quercus-3.1.2

    Quercus是Caucho公司采用纯Java开发的一个PHP5引擎,在Java下运行php ,很强大 。

    quercus-dark:栎属的深色主题| 多伦多大学

    【标题】"quercus-dark"指的是一个名为“栎属的深色主题”的项目,它可能是一个软件界面或代码编辑器的主题,旨在提供一个深色背景的视觉体验,减轻长时间盯着屏幕的眼睛疲劳。"栎属"这个名字可能源于植物学,栎树...

    quercus,java 里边运行php程序

    jvm 里边运行php程序的包,解决了中文乱码问题. 注意使用UTF-8编码保存页面格式.resin下替换原版就可以了.其它jsp服务器比如tomcat,要script-10.jar 可以拷贝resin3.x里边的包.使用方法看resin帮助.

    quercus quercus .war 4文件基于Java 的 PHP 框架

    是一个开源 PHP 5 引擎,它已经拥有了纯 Java 的完整实现。Quercus 文档指出,Quercus 在 Resin 应用服务器之上...另外,本文还将展示 Quercus 针对 Web 服务和应用程序的 “PHP + Java” 混合方法的易用性和灵活性。

    Tomcat服务器集成Quercus来支持php, jsp, java的Demo工程

    开发环境 eclipse java EE 4.5.0,jdk 1.7,Tomcat 7.0,Quercus 4.0.39 由Eclipse-jee生成的Dymanic Web...php调用java时遇到中文乱码问题,在DEMO中也有提出我的解决方案,如果有更好的解决方案也请大家不吝惜指教。

    为php配置java环境

    这通常涉及到在PHP应用程序中调用Java代码,例如通过JavaBridge或使用像Quercus这样的PHP到Java的转换器。以下是对这个主题的详细阐述: 1. **PHP与Java交互** PHP是一种广泛使用的开源脚本语言,主要应用于Web...

    技术经理决策参考-Java和PHP的协同开发方案

    最后,Quercus是一种独特的解决方案,它是一个100%用Java实现的PHP运行时环境。Quercus允许PHP应用直接与Java库交互,包括JMS、EJB、SOA框架、Hibernate和Spring等。通过将PHP代码解释/编译为Java,Quercus实现了PHP...

    LAJP(Linux Apache Java Php) -- PHP结合JAVA的开发技术.zip

    PHP可以通过JavaBridge、Quercus等工具直接调用Java类库,实现两者的无缝集成。 6. **优点**:LAJP的优势在于结合了Java的强类型和企业级特性以及PHP的快速开发能力。Java处理后台服务,保证系统的稳定性和安全性,...

    JavaBridge.jar php-script.jar php-servlet.jar

    JavaBridge.jar、php-script.jar 和 php-servlet.jar 是在Apache Tomcat服务器上运行PHP应用程序的关键...此外,随着技术的发展,现在有更多如Quercus这样的解决方案,它们提供了更高效的方式在Java环境中运行PHP代码。

    tomcat 环境下使用quercus运行php程序简单demo -登陆验证

    代码可以放在 tomcat 环境下运行(放到 tomcat 安装目录下启动 tomcat 即可),也可以用eclipse 打开,项目用 easyui 做前段框架,使用 php 做后台开发,请求用 的ajax,数据库使用 MySQL 5.6 。项目压缩包里包含 sql...

    借《浅谈PHP与Java之Web开发整合技术》说LAJP

    《浅谈PHP与Java之Web开发整合技术》一文深入探讨了PHP与Java两种语言在Web开发中的结合应用,尤其聚焦于三种关键技术:SOAP、Quercus和PHP/JavaBridge,为开发人员提供了宝贵的整合思路。 ### 一、SOAP(Simple ...

    quercus成就GAE上运行php项目

    Google app engine提供了虚拟服务器,但是目前只能支持python和java语言。php语言只有通过认证才可以使用,但是很难通过认证。本人做了一个通过quercus使php项目能运行到GAE上,这是简单的项目内容

    tomcat支持php环境需要的jar包

    要让Tomcat处理PHP,我们需要一个中间件,例如`Quercus`或者`PHP-Java Bridge`,这两个都是允许Java和PHP之间交互的解决方案。 1. **Quercus**:这是一个完全用Java编写的PHP解释器,它可以被Tomcat直接识别和执行...

    PHP with Java

    在GAE的环境下,由于它不原生支持PHP,Quercus就扮演了关键角色,使得开发者可以将PHP应用部署到这个基于Java的云服务平台上。 首先,我们需要了解Google App Engine的基本概念。GAE是一个PaaS(Platform as a ...

    让gae支持php的方法

    描述中提到的"基于java的Quercus"是一个关键的解决方案,它是一个兼容PHP的Java实现,可以让我们在不直接支持PHP的GAE上运行PHP代码。 Quercus是由Caucho Technology开发的一个高性能的PHP解释器,它完全用Java编写...

    php调用jar包依赖包

    4. 使用第三方库:有一些PHP库如Phalanger或Quercus,它们提供了在PHP中直接解释Java字节码的能力。这种方式可以直接引入Java的jar包,但是可能需要处理兼容性和性能问题。 在实际操作中,我们需要根据项目需求和...

Global site tag (gtag.js) - Google Analytics