كما نعلم جميعًا ، في JS ، لا يتم تقسيم طول السلسلة إلى أحرف صينية وإنجليزية ، ويتم حساب كل حرف على أنه طول ، وهو يختلف عن وظيفة Strlen () في PHP. تتراكم وظيفة Strlen () في PHP حرفين صينيين في GBK وفقًا لمجموعة الأحرف ، وتتراكم 3 أحرف صينية في UTF-8.
قد تسأل بعض أحذية الأطفال ، لماذا تحتاج إلى حساب الطول الفعلي؟
هو أساسا لتطابق مدى طول قاعدة البيانات. على سبيل المثال ، حقل معين في قاعدة بيانات GBK هو Varchar (10) ، وهو ما يعادل طول 5 أحرف صينية ، وشخصية صينية واحدة تساوي طول حرفين. إذا كانت قاعدة بيانات UTF8 ، فإن كل حرف صيني يبلغ طوله 3.
بعد معرفة المبدأ أعلاه ، يمكننا حساب الطول الفعلي للسلسلة. إذا كانت مجموعة أحرف GBK ، أضف 2 باللغة الصينية ، وإذا كانت مجموعة أحرف UTF8 ، أضف 3 باللغة الصينية.
وظيفة حساب طول GBK:
نسخة الكود كما يلي:
// احسب الطول الفعلي لمجموعة أحرف GBK
وظيفة getTrleng (str) {
var relelength = 0 ؛
var len = str.length ؛
var charcode = -1 ؛
لـ (var i = 0 ؛ i <len ؛ i ++) {
charcode = str.charcodeat (i) ؛
if (charcode> = 0 && charcode <= 128) {
relelength += 1 ؛
}آخر{
// إذا كان صينيًا ، أضف طول 2
relelength += 2 ؛
}
}
العودة relelength ؛
}
وظيفة حساب طول UTF8:
نسخة الكود كما يلي:
// احسب الطول الفعلي لمجموعة أحرف UTF8
وظيفة getTrleng (str) {
var relelength = 0 ؛
var len = str.length ؛
var charcode = -1 ؛
لـ (var i = 0 ؛ i <len ؛ i ++) {
charcode = str.charcodeat (i) ؛
if (charcode> = 0 && charcode <= 128) {
relelength += 1 ؛
}آخر{
// إذا كان صينيًا ، أضف 3 طول
relelength += 3 ؛
}
}
العودة relelength ؛
}