incubator-callback-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "Joe Bowser (Commented) (JIRA)" <j...@apache.org>
Subject [jira] [Commented] (CB-453) FileWriter.append - Chinese characters are not appended to the file correctly
Date Thu, 05 Apr 2012 23:46:23 GMT

    [ https://issues.apache.org/jira/browse/CB-453?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=13247857#comment-13247857
] 

Joe Bowser commented on CB-453:
-------------------------------

The problem appears to be in FileWriter.truncateFile, which FileWriter.write depends on. 
It writes in the wrong spot of the file, and Javascript isn't sending in the proper offsets
for multibyte characters.
                
> FileWriter.append - Chinese characters are not appended to the file correctly
> -----------------------------------------------------------------------------
>
>                 Key: CB-453
>                 URL: https://issues.apache.org/jira/browse/CB-453
>             Project: Apache Callback
>          Issue Type: Bug
>          Components: Android
>    Affects Versions: 1.5.0
>         Environment:     test("should be able to write and append to file in Chinese
Traditional, createWriter", function() {
>         QUnit.stop(Tests.TEST_TIMEOUT);
>         expect(2);
>         var that = this,
>             fileName = "writer.chinese",
>             filePath = this.root.fullPath + '/' + fileName,
>             // file content
>             rule = "每個規則有一個例外。",
>             // for testing file length
>             length = rule.length,
>             // writes initial file content
>             write_file = function(fileEntry) {
>                 fileEntry.createWriter(function(writer) {
>                     writer.onwriteend = function(evt) {
>                         // valid writing of non-ascii file was already validated in previous
test.
>                         // Append to file to verify writer.length and writer.position
are set correctly
>                         append_file(writer);
>                     };
>                     writer.write(rule); 
>                 }, that.fail);
>             }, 
>             // appends to file
>             append_file = function(writer) {
>                 var exception = "  除了這一個";            
>                 writer.onwriteend = function(evt) {
>                     // read back file to verify that data was appended
>                     var reader = new FileReader();
>                     reader.onloadend = function(evt) {
>                         console.log("old: " + rule + exception);
>                         console.log("new: " + evt.target.result);
>                         console.log("old: " + length);
>                         console.log("new: " + evt.target.result.length);
>                         
>                         ok(evt.target.result === (rule + exception), "reader.result after
append should be equal to the text written.");
>                         ok(evt.target.result.length === length, "reader.result length
should equal initial length.");
>                         // cleanup
>                         //that.deleteFile(fileName);
>                         QUnit.start();
>                     };
>                     var myFile = new File();
>                     myFile.fullPath = filePath; 
>                     reader.readAsText(myFile);
>                 };
>                 length += exception.length;
>                 console.log("len: " + writer.length);
>                 writer.seek(writer.length);
>                 console.log("pos: " + writer.position);
>                 writer.write(exception); 
>             };
>         
>         // create file, then write and append to it
>         this.createFile(fileName, write_file);
>     });
>            Reporter: Simon MacDonald
>            Assignee: Simon MacDonald
>             Fix For: 1.6.0
>
>
> When Becky checked in her update to the automated file tests (https://git-wip-us.apache.org/repos/asf?p=incubator-cordova-mobile-spec.git;a=commit;h=db377f9f2b4c5507b6eb1fcb8eb4fa029030cdef)
the test to check if you could append to a file that includes Chinese characters started to
fail. Apparently what we expect to be in the file is not correct.
> First write:
> Expect - "每個規則有一個例外。"
> Received - "每個規則有一個例外。"
> After append:
> Expect - "每個規則有一個例外。  除了這一個"
> Received - "每個規?  除了這一個"
> See environment section for the full test case.
> The root cause of the problem is that the FileWriter.write method returns the wrong number
of bytes written for multi-byte language strings like Chinese characters.

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       

Mime
View raw message