1
Как многие успели заметить, последние 2 часа сайт лежал.

Причиной оказался иероглиф, который я добавил в конвертацию в упрощённые.

Вот он виновник торжества:
[Изображение: 54.png]

Это из тех, которые пока не воспринимаются базой данных и поэтому не могут быть в словаре, вместо них пустое место. Но если такой добавить в конвертацию (в ), эффект получается ядрённый - падает весь сервер. При чём, падает не сразу - при поиске выдаются пустые слова с большой нагрузкой. Поэтому сложно было сразу понять в чём дело.
2013.11.09
Тема Ответить
2
Хаха,вот это прикол))) "熙" - это как я понял 繁体字 или у него вообще нету упрощенного аналога? Он вообще используеться в 口语? или это 书面语 ? просто я че то не слышал чтобы он в разговоре хоть как то использовался,да и ни в книге,ни в газете не встречал тоже ... может не то читал))
2013.11.09
Тема Ответить
3
бкрс, конгратулейшенз
не мог войти с утра по-пекински,
умение вырубить систему - признак класса тестера :-)
2013.11.09
Тема Ответить
4
2013.11.09Geologist не мог войти с утра по-пекински,
С утра должно было всё работать. Это в 17-20 по-китайски лежало
2013.11.09
Тема Ответить
5
2013.11.09Nurikos "熙" - это как я понял 繁体字 или у него вообще нету упрощенного аналога? Он вообще используеться в 口语? или это 书面语 ?
Это не 熙, а один из его вариантов - http://zh.wiktionary.org/zh/%F0%A4%8B%AE

Если, например, его здесь вставить, то всё что после него не сохранится.
2013.11.09
Тема Ответить
6
Я для себя решил вопрос с сохранением верхних плоскостей уникода в MySQL, заменяя их при сохранении в БД на &#...;, примерно так:
Код:
function replaceonsave_replace_callback($matches) {
        $u8 = $matches[0];
        $code = ((ord($u8{0}) & 0x07) << 18) |
                ((ord($u8{1}) & 0x3F) << 12) |
                ((ord($u8{2}) & 0x3F) << 6 ) |
                (ord($u8{3}) & 0x3F);
        return '&#' . $code . ';';
}

function replaceonsave_replace($s) {
    return preg_replace_callback(
            '/[\xF0-\xF7][\x80-\xBF]{3}/',
            'replaceonsave_replace_callback',
            $s));
}
2013.11.09
Тема Ответить
7
2013.11.09бкрс С утра должно было всё работать. Это в 17-20 по-китайски лежало

сегодня важный пленум КПК начался, может стали строже фильтровать
2013.11.09
Тема Ответить
8
2013.11.09seaweed Я для себя решил вопрос с сохранением верхних плоскостей уникода в MySQL, заменяя их при сохранении в БД на &#...;, примерно так:
Спасибо, потом посмотрю можно ли к бкрс прикрутить. Я об таком думал, но не смог найти регулярку, т.е. [\xF0-\xF7][\x80-\xBF]{3} тут самое ценное, чтобы их определять.
Но тут немного усложняется тем, что для поиска по ним придётся весь ввод тестировать.
А для конвертации я их тупо в текстовом файле храню, который подгружаются к остальным.

Кстати, есть ли какая надёжная регулярка для "иероглиф"? Я сейчас пользуюсь [一-鶴], но есть сомнения на счёт охвата.
2013.11.10
Тема Ответить
9
2013.11.10бкрс Кстати, есть ли какая надёжная регулярка для "иероглиф"? Я сейчас пользуюсь [一-鶴], но есть сомнения на счёт охвата.

Я пользуюсь [\x{2E80}-\x{303F}\x{3300}-\x{9FFF}]. Смотрите Unicode Character Ranges подробнее.
2013.11.10
Тема Ответить
10
2013.11.10小熊 Я пользуюсь [\x{2E80}-\x{303F}\x{3300}-\x{9FFF}]. Смотрите Unicode Character Ranges подробнее.
鶴 не захватило:
Код:
echo preg_match("@[\x{2E80}-\x{303F}\x{3300}-\x{9FFF}]@u", "鶴"); // 0
2013.11.10
Тема Ответить