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