javascript dhe manipulimi i vargut w / utf-16 çifte zëvendësuese

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 = "         
16
задан tchrist 30 July 2011 в 21:51
поделиться