]
Bela Ban resolved JGRP-2061.
----------------------------
Resolution: Done
TYPE_STRING does not handle unicode
-----------------------------------
Key: JGRP-2061
URL:
https://issues.jboss.org/browse/JGRP-2061
Project: JGroups
Issue Type: Bug
Reporter: Cody Ebberson
Assignee: Bela Ban
Fix For: 4.0.6
In several places throughout the org.jgroups.util.Util class, it is assumed that Strings
are one byte per character.
For example, see objectToByteBuffer lines 561-567:
https://github.com/belaban/JGroups/blob/master/src/org/jgroups/util/Util....
{code:java}
case TYPE_STRING:
String str=(String)obj;
int len=str.length();
ByteBuffer retval=ByteBuffer.allocate(Global.BYTE_SIZE + len).put(TYPE_STRING);
for(int i=0; i < len; i++)
retval.put((byte)str.charAt(i));
return retval.array();
{code}
This code will incorrectly encode any String with non ASCII encoding.
There are several options to fix. You could use str.getBytes(StandardCharsets.UTF_8) to
get a proper byte encoding, or you could use the existing TYPE_SERIALIZABLE code path.