semihs / jsocket

Automatically exported from code.google.com/p/jsocket
0 stars 0 forks source link

Missing UTF-8 Characters #8

Open GoogleCodeExporter opened 8 years ago

GoogleCodeExporter commented 8 years ago
Using jSocket from the browser, I send "green\u0000yellow" and expect 
"green\u0000yellow", or "green\x00yellow" at the server.php, however, I receive 
"green\x0r\x0writ" (php); i.e. html entities: 
"green�r�writ" See: 
http://www.utf8-chartable.de/unicode-utf8-table.pl?number=1024&unicodeinhtml=dec
&htmlent=1

What steps will reproduce the problem?

1) Setup the jsocket sample (samples/client/example/example.html) and the 
http://code.google.com/p/jsocket/source/browse/trunk/jsocket/samples/server/php/
server.php

2) Replace mySocket.write("GET / HTTP/1.1\r\n\r\n"); with
mySocket.write("green\u0000yellow");

3) The server.php code should receive "green\x0yellow", however the data 
becomes (php) "green\x0r\x0writ"

What version of the product are you using? On what operating system?
Version: svn:r132

I have also tried the writeUTFBytes and writeUTF functions.

Original issue reported on code.google.com by erik.hal...@gmail.com on 25 Jul 2010 at 3:59

GoogleCodeExporter commented 8 years ago
Interesting, I am not aware of jsocket making any changes to the data it sends 
or receives, so it may just be a javascript/flash or php antic, but ill have a 
look at it tomorrow. Thanks for reporting this issue.

Original comment by aidamina on 28 Jul 2010 at 11:25

GoogleCodeExporter commented 8 years ago
[deleted comment]
GoogleCodeExporter commented 8 years ago
This is not a problem with jsocket. jsocket uses FABrige.js (FB) which uses XML 
to transfer javascript objects between actionscript (as3) and javascript. Only 
valid XML characters are allowed. In addition, FB does not transfer all 
javascript base types properly. Here is an example:

var o={};
o['my-id']=green;

This code will crash an as3 ExternalInterface.call('some function',o).

The only way I know of transferring binary objects and strings through FB 
and/or using ExternalInterface is to serialize the base type using JSON and 
then use Base64 encoding. Reverse the serialization on the other end.

In addition, encodeURIComponent and escape top level functions will not work 
either for all valid UTF-16 characters which javascript and actionscript use.

I recommend this issue be closed.

Original comment by erik.hal...@gmail.com on 12 Aug 2010 at 4:53