Tue 23 Oct 2007 01:44:45 PM UTC, original submission:
charAt() returns wrong values for special chars in strings. Looks like it returns the UTF-8 codes instead of the single char value.
--- code in attached test case ---
// Special chars (UTF8?) test
function dump(s) {
var out = "LEN="+s.length+", CODES=";
for (var i=0; i<s.length; i++)
out += "<"+ord(s.charAt(i))+">";
return out;
}
var s = "höm";
trace("plain: "+s);
trace("string: "+dump(s));
trace("correct: LEN=3, CODES=<104><246><109>");
trace("");
var s = "áà";
trace("plain: "+s);
trace("string: "+dump(s));
trace("correct: LEN=2, CODES=<225><224>");
------------------------------------------
Current HEAD prints this output:
2973] 15:41:35: TRACE: plain: höm
2973] 15:41:35: TRACE: string: LEN=4, CODES=<104><-61><-74><109>
2973] 15:41:35: TRACE: correct: LEN=3, CODES=<104><246><109>
2973] 15:41:35: TRACE:
2973] 15:41:35: TRACE: plain: áà
2973] 15:41:35: TRACE: string: LEN=4, CODES=<-61><-95><-61><-96>
2973] 15:41:35: TRACE: correct: LEN=2, CODES=<225><224>
2973] 15:41:35: DEBUG: Global instance list grew to 1 entries
The "correct" lines show what the proprietary player would return.
|