[ 
https://issues.apache.org/jira/browse/DERBY-4757?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12908740#action_12908740
 ] 

Knut Anders Hatlen commented on DERBY-4757:
-------------------------------------------

I came across this method in Utf8CcidManager (client) added in one of the 
earlier patches:

    public char convertToJavaChar(byte sourceByte) {
        /* 1 byte = 0 to 255 which is the same in UTF-8 and ASCII */ 
        return (char)sourceByte;
    }

I'm not sure how it's supposed to be used, since it is currently only called 
from one of the tests, but it doesn't look quite right. The problem is that 
byte is a signed type, so for non-ascii characters in the range 0x80-0xff the 
corresponding byte values are negative. When casting that negative value to a 
char, we won't end up with a char in the 0x80-0xff range, but rather with a 
char in the 0xff80-0xffff range.

To expose this problem, add these lines to 
Utf8CcsidManagerClientTest.testConvertToJavaChar()

    b = (byte) 0xe5;
    assertEquals('\u00e5', ccsidManager.convertToJavaChar(b));

and see the test fail with

    AssertionFailedError: expected:<å> but was:<¥>

> (Client) Implement UTF8 support on DRDA
> ---------------------------------------
>
>                 Key: DERBY-4757
>                 URL: https://issues.apache.org/jira/browse/DERBY-4757
>             Project: Derby
>          Issue Type: Sub-task
>          Components: Network Client
>    Affects Versions: 10.7.0.0
>            Reporter: Tiago R. Espinha
>            Assignee: Tiago R. Espinha
>         Attachments: DERBY-4757_donotcommit.diff, DERBY-4757_p1.diff, 
> DERBY-4757_p2.diff, DERBY-4757_p3.diff, DERBY-4757_p3.diff
>
>
> This issue is DERBY-4746's counterpart for the client changes required to 
> implement UTF8 support in DRDA.

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.

Reply via email to