Unë jam duke punuar në një aplikacion në Twitter dhe thjesht u futa në botën e utf-8 (16). Duket se shumica e funksioneve të vargjeve javascript janë po aq të verbër sa çiftet zëvendësuese si unë. Duhet të rikodifikoj disa gjëra për ta bërë atë të vetëdijshëm për karakterin e gjerë.
Unë kam këtë funksion për të analizuar vargjet në vargje duke ruajtur çiftet zëvendësuese. Pastaj do të rikodifikoj disa funksione për t'u marrë me vargjet sesa me vargjet.
function sortSurrogates(str){
var cp = []; // array to hold code points
while(str.length){ // loop till we've done the whole string
if(/[\uD800-\uDFFF]/.test(str.substr(0,1))){ // test the first character
// High surrogate found low surrogate follows
cp.push(str.substr(0,2)); // push the two onto array
str = str.substr(2); // clip the two off the string
}else{ // else BMP code point
cp.push(str.substr(0,1)); // push one onto array
str = str.substr(1); // clip one from string
}
} // loop
return cp; // return the array
}
Pyetja ime është, a ka diçka më të thjeshtë që po më mungon? Shoh kaq shumë njerëz që përsërisin që javascript merret me utf-16 vendas, megjithatë testimi im më bën të besoj, se mund të jetë formati i të dhënave, por funksionet nuk e dinë akoma. A më mungon diçka e thjeshtë?
EDIT: Për të ndihmuar në ilustrimin e çështjes:
var a = "0123456789"; // U+0030 - U+0039 2 bytes each
var b = "