ID:               28117
 Updated by:       [EMAIL PROTECTED]
 Reported By:      kaija_jan at hotmail dot com
-Status:           Open
+Status:           Feedback
 Bug Type:         COM related
 Operating System: windows 2k
 PHP Version:      5.0.0RC1
 New Comment:

Are you running CGI, CLI, IIS or Apache module ?



Previous Comments:
------------------------------------------------------------------------

[2004-04-28 03:38:04] kaija_jan at hotmail dot com

Does this problem is a bug?
It shows the same in RC2. :(

------------------------------------------------------------------------

[2004-04-23 10:26:23] kaija_jan at hotmail dot com

It's output the same in this case.
I had tried this way.
And I also tried to print out each byte of "e" and "d"(even a) in the
DELPHI COM Object.

*It's different between e and d(or a).*

It's the same if you try to return the string from the Object. But It's
different in the object.
This problem confused me for a long time.

Notice : I'm not sure if it is the same result in Visual C++
COM.(Delphi COM crashed php, but VC COM didn't.) I'm not a good C
programmer :(. I can't help you about this.

=========================
output:
d is a4a4a4e5
e is a4a4a4e5
=========================

------------------------------------------------------------------------

[2004-04-23 09:53:46] [EMAIL PROTECTED]

Could you please adjust your COM object to return e instead, and paste
the output of this script here?

<?php
    $a = $b = $c = $d = "中文"; //some chinese words
    $comtest = new COM("comtest.test1");
    $e = $comtest->comparestr($a, $b, $c, $d);
    echo "d is " . bin2hex($d) . "\n";
    echo "e is " . bin2hex($e) . "\n";
?>


------------------------------------------------------------------------

[2004-04-23 09:13:34] kaija_jan at hotmail dot com

$obj = new COM("comtest.test1", null, 950);

I got the same result after I modify the codepage parameter.
======================
a=b
c=d
a=c
a<>e
c<>e
======================

And I tried each codepage under.
CP_ACP, CP_MACCP, CP_OEMCP, CP_UTF7, CP_UTF8, CP_SYMBOL, 
CP_THREAD_ACP

I also tried the same code in PHP 4.3.6(It crashes php in 4.3.4), It
gives me the same result as PHP 5 RC1.

------------------------------------------------------------------------

[2004-04-23 08:32:17] [EMAIL PROTECTED]

You need to tell COM that the text is chinese.
There are two ways to achieve this:

set com.code_page ini setting to the number corresponding to chinese
(this is the default code_page used by PHP--the default is CP_ACP), or
set the code_page in the third parameter of the COM constructor:

$obj = new COM("comtest.test1", null, $codepage);

PHP defines these constants for codepages; they can be
used both in your scripts and in the php.ini:

CP_ACP
CP_MACCP
CP_OEMCP
CP_UTF7
CP_UTF8
CP_SYMBOL
CP_THREAD_ACP

You can use the numeric value for the chinese code page directly if you
know it (you probably want 950 or 936).  Consult MSDN for more
information:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/act/htm/actml_ref_scpg.asp



------------------------------------------------------------------------

The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
    http://bugs.php.net/28117

-- 
Edit this bug report at http://bugs.php.net/?id=28117&edit=1

Reply via email to