bugmaker
invulnerable
offline
Опыт:
2,282Активность: |
проблемма с русскими символами
Вобщем сделал небольшой скрипт для моей системы:
Код:
Обазначеная: думаю мне не надо объяснять как прописывать функции get_cfg ("MaxLine") и get_cfg ("MaxSymb") (это строковые значения в кеше) Собственно вопрос: если прогнать там текст(qwertyuiopasdfghjklzxcvbnm), в котором тока латинские символы, если "MaxLine" = 15, "MaxSymb" = 5, то получим "qwert|nyuiop|nasdfg|nhjklz|nxcvbn|nm|n|n|n|n|n|n|n|n|n|n" (ну примерно так), а если текст, содержащий русские символы (с темиже параметрами) (йцукенгшщзхъфывапролджэячсмитььб), то получим "йцуке|nнгшщзnхъфыв|nапролnджэяч|nсмитьnьб|n|n|n|n|n|n|n|n|n" (примерно так)т.е через 1 раз сюедает |, а n оставляет. Вобщем не пойму че за хз такая. Если знаете как мона сделать так чтоб все работало, то подскажите плиз, или альтернативу кую нить. заранее сенкс. |
25.12.2005, 19:43 | #1
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
zibada
offline
Опыт: отключен
|
возможно, это связано с тем, что русские строки в некоторых местах хранятся в UTF-8, т.е. один символ может занимать несколько байт, и при разрезании такой строки на отдельные байты можно разрезать "не там", и полезут глюки с пропаданием символов итп..
строка русская у тебя где задается? попробуй напрямую в скрипте (не в триггерах или где-то еще) ее задать..
также попробуй границу разрезания поставить четную, а не 5, хотя при наличии смешанных строк с русскими и не-русскими символами (пробелами например) проблемы все равно останутся.. з.ы. все вышенаписанное есть неподтвержденные догадки. |
25.12.2005, 20:02 | #2
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,762Активность: |
Да, видел уже тексты по этому поводу - проблема с русскими символами.
Цитата:
То есть при подсчете приходится учитывать эту фичу |
|
25.12.2005, 20:15 | #3
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
bugmaker
invulnerable
offline
Опыт:
2,282Активность: |
хреново... |
25.12.2005, 20:17 | #4
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
NETRAT
offline
Опыт:
83,762Активность: |
То есть глюки будут наблюдаться с функциями StrLen / StrSubstr и иже с ними. Выход - переделать их на свой лад - то есть чтобы они принимали русские буквы как 2 байта |
25.12.2005, 20:17 | #5
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
bugmaker
invulnerable
offline
Опыт:
2,282Активность: |
ладно спасибо чуваки, пойду в оффлайн родимый и перепишу... |
25.12.2005, 20:29 | #6
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
remal
нечто
offline
Опыт:
2,087Активность: |
у меня строки с русскими символами работали на ура и в скриптах и в чате(при обработки вводимых данных с "консоли" в варе). |
30.12.2005, 15:02 | #7
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|
bugmaker
invulnerable
offline
Опыт:
2,282Активность: |
да кста савсэм забыл про ту наработку. короче воть попробовал написать скрипт на определение русских символов. но счето неработает, я его написал за <15 мин. и уверен что сделал идиотскую ошибку которую я немогу найти. А вообще ее как то можно подругому сфорганитъ?
да вотъ константные функции Код:
вотъ код который нада впихнуть в триггер, инициализирующийся с мапой Код:
а вотъ собсно фанкшын Код:
ну вот короче (сразу скажите если можно было обойтись без написания алф^авита) bugmaker добавил: скажите если я че пропустил, просто скрипт я выдеряю из моей карты, могу не заметить нехватки Отредактировано bugmaker, 14.01.2006 в 04:50. |
14.01.2006, 04:56 | #8
+0/−0
Профиль |
Приват |
Поиск |
Цитата |
IP: Записан
|