LINUX.ORG.RU

История изменений

Исправление deep-purple, (текущая версия) :

utf-8 там плавающий размер у букв

Да. От 1 до 6 байт. И в первом байте указано сколько ещё байт надо прочесть до полного символа:

if (firstByte < 128) {
    moreLen = 0;
} else if (firstByte < 224) {
    moreLen = 1;
} else if (firstByte < 240) {
    moreLen = 2;
} else if (firstByte < 248) {
    moreLen = 3;
} else if (firstByte < 252) {
    moreLen = 4;
} else {
    moreLen = 5;
}
М? Вычитай единожды из исходной строки в своё внутреннее представление (какое захочешь, хош велосипед (символ всегда размером в 6 байт), хош утф-32) и пользуй.

Исправление deep-purple, :

utf-8 там плавающий размер у букв

Да. От 1 до 6 байт. И в первом байте указано сколько ещё байт надо прочесть до полного символа:

if (firstByte < 128) {
    moreLen = 0;
} else if (firstByte < 224) {
    moreLen = 1;
} else if (firstByte < 240) {
    moreLen = 2;
} else if (firstByte < 248) {
    moreLen = 3;
} else if (firstByte < 252) {
    moreLen = 4;
} else {
    moreLen = 5;
}
М? Вычитай единожды из исходной строки в своё внутреннее представление (какое захочешь, хош велосипед, хош утф-32) и пользуй.

Исходная версия deep-purple, :

utf-8 там плавающий размер у букв

Да. От 1 до 6 байт. И в первом байте указано сколько ещё байт надо прочесть до полного символа:

if (firstByte < 128) {
    moreLen = 0;
} else if (firstByte < 224) {
    moreLen = 1;
} else if (firstByte < 240) {
    moreLen = 2;
} else if (firstByte < 248) {
    moreLen = 3;
} else if (firstByte < 252) {
    moreLen = 4;
} else {
    moreLen = 5;
}
М?