Игровые сервера:

TF2.Tomsk.ru:27015 Public
 UPDATE
 
TF2.Tomsk.ru:27016
 UPDATE
 


Томск


  • Начало
  •  » Другое
  •  » Ошибка: "Слишком длинная строка" в карточке игрока


#1 14-01-2009 16:57:37

Ошибка: "Слишком длинная строка" в карточке игрока

Проблема: При вводе в поля "Основной ник" и "Другие любимые ники" русских букв при использовании больше 10 символов происходит ошибка "Слишком длинная строка". При это если вводить латинскими буквами. То можно ввести все 20 символов.

Мои предположения: Скорей всего все дело в базе данных. Данные колонки "Основной ник"  и "Другие любимые ники" могут максимально хранить 20 байт информации. Так как на данном сайте используется UTF-8. То все латинские символы ASCII занимают 1 байт, а все русские символы занимают 2 байта. Поэтому не хватает места для русских символов.

Решение: Если предположение правильное то можно либо поменять тип данных в вышеупомянутых колонках либо увеличить доступное место с 20 на 40байт.

P.S. Сам программист на php если потребуется готов залезть в исходники сайта и предоставить патч.

Отредактированно maximax (14-01-2009 16:59:25)


Ник в игре: Бум|Максимка
Ник в стиме: russia_maximax

Неактивен

 

#2 14-01-2009 20:40:54

Sipaha

Опытный пользователь


Отправить ЛС
Профиль

Re: Ошибка: "Слишком длинная строка" в карточке игрока

а зачем такие длинные ники делать?


http://sc2tv.ru/sig/4403.png

Неактивен

 

#3 14-01-2009 21:38:53

Re: Ошибка: "Слишком длинная строка" в карточке игрока

Клан + Ник и на всё про всё 10 символов. Мало.

Отредактированно maximax (14-01-2009 21:39:19)


Ник в игре: Бум|Максимка
Ник в стиме: russia_maximax

Неактивен

 

#4 14-01-2009 21:51:21

doping

Опытный пользователь


Отправить ЛС
Профиль

Re: Ошибка: "Слишком длинная строка" в карточке игрока

А не вариант ли сократить тогда ник или клан?


ник в TF2 shadowcat

Неактивен

 

#5 14-01-2009 22:10:42

Re: Ошибка: "Слишком длинная строка" в карточке игрока

maximax написал:

Проблема: При вводе в поля "Основной ник" и "Другие любимые ники" русских букв при использовании больше 10 символов происходит ошибка "Слишком длинная строка". При это если вводить латинскими буквами.

P.S. Сам программист на php если потребуется готов залезть в исходники сайта и предоставить патч.

Спасибо за сигнал. )
с русскими Никами не успел проверить.
Просто в валидаторе формы не изменил число допустимых символов в нике на реальное. щас увеличил до 40. должно влезать. Заодно исправил баг в скрипте генерации латинской версии Ника (для Friendly-Urls).

Спасибо за предложенную помощь в создании патча :-)
но пока справился сам )

Неактивен

 

#6 14-01-2009 22:41:22

Re: Ошибка: "Слишком длинная строка" в карточке игрока

maximax написал:

Мои предположения: Скорей всего все дело в базе данных. Данные колонки "Основной ник"  и "Другие любимые ники" могут максимально хранить 20 байт информации. Так как на данном сайте используется UTF-8. То все латинские символы ASCII занимают 1 байт, а все русские символы занимают 2 байта. Поэтому не хватает места для русских символов.

Кстати, проблема не может быть в БД, так как и таблицы и поля имеют кодировку utf8. и соответсвенно если поле varchar(10) например, то в нем спокойно будет хранится 10 символов, в латинице или в кириллице они будут - неважно.

Все зло в PHP . ОН нативно не умеет работать с юникодом. отсюда все проблемы. приходится делать костыли везде где есть работа со строками. даже мультибайтовые функции из mb_strings не во всех случаях спасают. Этоже касается и Регекспов.
Ждем php6 )
или перелазим на ява,питон,руби.... где с юникодом все окей

Неактивен

 

#7 15-01-2009 02:46:01

Re: Ошибка: "Слишком длинная строка" в карточке игрока

runcore написал:

Кстати, проблема не может быть в БД, так как и таблицы и поля имеют кодировку utf8. и соответсвенно если поле varchar(10) например, то в нем спокойно будет хранится 10 символов, в латинице или в кириллице они будут - неважно.

Это первое что мне пришло в голову smile, ведь я не знал какой тип данных в бд вы используете.

runcore написал:

Все зло в PHP . ОН нативно не умеет работать с юникодом. отсюда все проблемы. приходится делать костыли везде где есть работа со строками. даже мультибайтовые функции из mb_strings не во всех случаях спасают. Этоже касается и Регекспов.
Ждем php6 )
или перелазим на ява,питон,руби.... где с юникодом все окей

Всё подпинываю свою команду переходить на Яву smile, но пока сопротивляются smile

Большое спасибо и за оперативность в том числе smile


Ник в игре: Бум|Максимка
Ник в стиме: russia_maximax

Неактивен

 

#8 15-01-2009 13:41:32

Re: Ошибка: "Слишком длинная строка" в карточке игрока

maximax написал:

Всё подпинываю свою команду переходить на Яву

Ява всем хороша. Но меня лично напрягает её "многословность" и местами тормознутость.
То что на Пхп или Питоне решается быстро и без запарок, например, на Ява придется создавать классы, интерфейсы, объявлять переменные... в итоге пока все это делаю иногда уже забываю - что вообще хотел сделать )))

но это скорее дело привычки и самого подхода. На пхп Сразу начинаешь писать решение задачи, а Ява заставляет сначала подумать что будет нужно, как будет работать, спроектировать в голове структуру решения - и тока потом начинаешь кодить. это конечно правильнее. но времени уходит больше )

Неактивен

 
  • Начало
  •  » Другое
  •  » Ошибка: "Слишком длинная строка" в карточке игрока

Board footer