Рейтинг темы:
  • 0 Голос(ов) - 0 в среднем
  • 1
  • 2
  • 3
  • 4
  • 5
Проблемы с русской MySQL
#11
Gambit_J Написал:вообщем я и не сомневался. Предпоследний пост почитайте, должно помочь. Чат ни как не относиться к базе.

Относится если данные в чат идут напрямую с базы. Дело в том что я пытаюсь создать моба через темплайт. Когда такое происходит все данные берутся с сервера если данный моб не прописан в клиенте. Прописать одного моба не сложно, но когда их тысячи это выливается в проблему.
Вообщем попробую как то это решить в ядре.
Ответ
#12
ShadowAngel Написал:Относится если данные в чат идут напрямую с базы. Дело в том что я пытаюсь создать моба через темплайт. Когда такое происходит все данные берутся с сервера если данный моб не прописан в клиенте. Прописать одного моба не сложно, но когда их тысячи это выливается в проблему.
Вообщем попробую как то это решить в ядре.

или авто-анонс. Smile Но погодите, когда просто игроки перепиливаются, тоже каракули? Просто для эксперимента попробуйте с др патча зайти, свой резерваните.
Ответ
#13
Gambit_J Написал:или авто-анонс. Smile Но погодите, когда просто игроки перепиливаются, тоже каракули? Просто для эксперимента попробуйте с др патча зайти, свой резерваните.

Нет каракули только когда игрок дерется с монстром которого нет в паче. Я патч делаю сам с нуля. И еще раз повторяю, я знаю как убрать данную проблему с помощью патчя, но мне нужно сделать это на уровне ядра.
Путем экспериментов выяснил что в ядре данные перекодируются в кодировку похожую на Cp866, но при переводе теряются некоторые буквы, такие как "р".

Добавлено через 12 часов 20 минут
Итак плюнул я на всякие там стандартные методы и кодировки, и написал с нуля енкодер с непонятного юникода в нормальный русский текст.
Может кому то пригодится:
Код:
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*
* Класс создал ShadowAngel
*/

package ru.l2open;

public class UTF_to_Rus
{
    public static String decode(String str)
    {
        int d = str.length() - 1; //Получаем длинну входящего стринга
        String newString = new String();
        for (int i = 0; i > d; i++) // Начинаем побуквинную проверку всего стринга
        {
        int ch = str.codePointAt(i);
        //Rus
        if (ch == 1040)
            newString.concat("А");
        else if (ch == 1041)
            newString.concat("Б");
        else if (ch == 1042)
            newString.concat("В");
        else if (ch == 1043)
            newString.concat("Г");
        else if (ch == 1044)
            newString.concat("Д");
        else if (ch == 1045)
            newString.concat("Е");
        else if (ch == 1046)
            newString.concat("Ж");
        else if (ch == 1047)
            newString.concat("З");
        else if (ch == 1048)
            newString.concat("И");
        else if (ch == 1049)
            newString.concat("Й");
        else if (ch == 1050)
            newString.concat("К");    
        else if (ch == 1051)
            newString.concat("Л");    
        else if (ch == 1052)
            newString.concat("М");
        else if (ch == 1053)
            newString.concat("Н");
        else if (ch == 1054)
            newString.concat("О");
        else if (ch == 1055)
            newString.concat("П");
        else if (ch == 1056)
            newString.concat("Р");
        else if (ch == 1057)
            newString.concat("С");
        else if (ch == 1058)
            newString.concat("Т");
        else if (ch == 1059)
            newString.concat("У");
        else if (ch == 1060)
            newString.concat("Ф");
        else if (ch == 1061)
            newString.concat("Х");
        else if (ch == 1062)
            newString.concat("Ц");
        else if (ch == 1063)
            newString.concat("Ч");
        else if (ch == 1064)
            newString.concat("Ш");
        else if (ch == 1065)
            newString.concat("Щ");
        else if (ch == 1066)
            newString.concat("Ъ");
        else if (ch == 1067)
            newString.concat("Ы");
        else if (ch == 1068)
            newString.concat("Ь");
        else if (ch == 1069)
            newString.concat("Э");
        else if (ch == 1070)
            newString.concat("Ю");
        else if (ch == 1071)
            newString.concat("Я");
        else if (ch == 1072)
            newString.concat("а");
        else if (ch == 1073)
            newString.concat("б");
        else if (ch == 1074)
            newString.concat("в");
        else if (ch == 1075)
            newString.concat("г");
        else if (ch == 1076)
            newString.concat("д");
        else if (ch == 1077)
            newString.concat("е");
        else if (ch == 1078)
            newString.concat("ж");
        else if (ch == 1079)
            newString.concat("з");
        else if (ch == 1080)
            newString.concat("и");
        else if (ch == 1081)
            newString.concat("й");
        else if (ch == 1082)
            newString.concat("к");    
        else if (ch == 1083)
            newString.concat("л");    
        else if (ch == 1084)
            newString.concat("м");
        else if (ch == 1085)
            newString.concat("н");
        else if (ch == 1086)
            newString.concat("о");
        else if (ch == 1087)
            newString.concat("п");
        else if (ch == 1088)
            newString.concat("р");
        else if (ch == 1089)
            newString.concat("с");
        else if (ch == 1090)
            newString.concat("т");
        else if (ch == 1091)
            newString.concat("у");
        else if (ch == 1092)
            newString.concat("ф");
        else if (ch == 1093)
            newString.concat("х");
        else if (ch == 1094)
            newString.concat("ц");
        else if (ch == 1095)
            newString.concat("ч");
        else if (ch == 1096)
            newString.concat("ш");
        else if (ch == 1097)
            newString.concat("щ");
        else if (ch == 1098)
            newString.concat("ъ");
        else if (ch == 1099)
            newString.concat("ы");
        else if (ch == 1100)
            newString.concat("ь");
        else if (ch == 1101)
            newString.concat("э");
        else if (ch == 1102)
            newString.concat("ю");
        else if (ch == 1103)
            newString.concat("я");
        //Eng
        else if (ch == 65)
            newString.concat("A");
        else if (ch == 66)
            newString.concat("B");
        else if (ch == 67)
            newString.concat("C");
        else if (ch == 68)
            newString.concat("D");
        else if (ch == 69)
            newString.concat("E");
        else if (ch == 70)
            newString.concat("F");
        else if (ch == 71)
            newString.concat("G");
        else if (ch == 72)
            newString.concat("H");
        else if (ch == 73)
            newString.concat("I");
        else if (ch == 74)
            newString.concat("J");
        else if (ch == 75)
            newString.concat("K");    
        else if (ch == 76)
            newString.concat("L");    
        else if (ch == 77)
            newString.concat("M");
        else if (ch == 78)
            newString.concat("N");
        else if (ch == 79)
            newString.concat("O");
        else if (ch == 80)
            newString.concat("P");
        else if (ch == 81)
            newString.concat("Q");
        else if (ch == 82)
            newString.concat("R");
        else if (ch == 83)
            newString.concat("S");
        else if (ch == 84)
            newString.concat("T");
        else if (ch == 85)
            newString.concat("U");
        else if (ch == 86)
            newString.concat("V");
        else if (ch == 87)
            newString.concat("W");
        else if (ch == 88)
            newString.concat("X");
        else if (ch == 89)
            newString.concat("Y");
        else if (ch == 90)
            newString.concat("Z");
        else if (ch == 97)
            newString.concat("a");
        else if (ch == 98)
            newString.concat("b");
        else if (ch == 99)
            newString.concat("c");
        else if (ch == 100)
            newString.concat("d");
        else if (ch == 101)
            newString.concat("e");
        else if (ch == 102)
            newString.concat("f");
        else if (ch == 103)
            newString.concat("g");
        else if (ch == 104)
            newString.concat("h");
        else if (ch == 105)
            newString.concat("i");
        else if (ch == 106)
            newString.concat("j");
        else if (ch == 107)
            newString.concat("k");    
        else if (ch == 108)
            newString.concat("l");    
        else if (ch == 109)
            newString.concat("m");
        else if (ch == 110)
            newString.concat("n");
        else if (ch == 111)
            newString.concat("o");
        else if (ch == 112)
            newString.concat("p");
        else if (ch == 113)
            newString.concat("q");
        else if (ch == 114)
            newString.concat("r");
        else if (ch == 115)
            newString.concat("s");
        else if (ch == 116)
            newString.concat("t");
        else if (ch == 117)
            newString.concat("u");
        else if (ch == 118)
            newString.concat("v");
        else if (ch == 119)
            newString.concat("w");
        else if (ch == 120)
            newString.concat("x");
        else if (ch == 121)
            newString.concat("y");
        else if (ch == 122)
            newString.concat("z");
        //Спец символы и цыфры
        else if (ch == 48)
            newString.concat("0");
        else if (ch == 49)
            newString.concat("1");
        else if (ch == 50)
            newString.concat("2");
        else if (ch == 51)
            newString.concat("3");
        else if (ch == 52)
            newString.concat("4");
        else if (ch == 53)
            newString.concat("5");            
        else if (ch == 54)
            newString.concat("6");
        else if (ch == 55)
            newString.concat("7");
        else if (ch == 56)
            newString.concat("8");
        else if (ch == 57)
            newString.concat("9");            
        else if (ch == 32) // Пробел
            newString.concat(" ");
        else if (ch == 40)
            newString.concat("(");
        else if (ch == 41)
            newString.concat(")");
        else
            newString.concat("§"); //Неизвестный символ
        }
    return newString; // Возвращает результат
    }
}// Конец класа UTF_to_Rus
Ответ
#14
Обновил декодер. Теперь переводятся не только имена но и систем чат.
Код:
/*
* This program is free software: you can redistribute it and/or modify it under
* the terms of the GNU General Public License as published by the Free Software
* Foundation, either version 3 of the License, or (at your option) any later
* version.
*
* This program is distributed in the hope that it will be useful, but WITHOUT
* ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
* FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
* details.
*
* You should have received a copy of the GNU General Public License along with
* this program. If not, see <http://www.gnu.org/licenses/>.
*
* Класс создал ShadowAngel
*/

package ru.l2open;

public class UTF_to_Rus
{
    public static String decode(String str)
    {
        int d = str.length()-1; //Получаем длинну входящего стринга
        String[] newString = new String[d+1];
        int i=0;
        while (i <= d) // Начинаем побуквинную проверку всего стринга
        {
        int ch = str.codePointAt(i);
        //Rus
        if (ch == 1040)
            newString[i] ="А";
        else if (ch == 1041)
            newString[i] ="Б";
        else if (ch == 1042)
            newString[i] ="В";
        else if (ch == 1043)
            newString[i] ="Г";
        else if (ch == 1044)
            newString[i] ="Д";
        else if (ch == 1045)
            newString[i] ="Е";
        else if (ch == 1046)
            newString[i] ="Ж";
        else if (ch == 1047)
            newString[i] ="З";
        else if (ch == 1048)
            newString[i] ="И";
        else if (ch == 1049)
            newString[i] ="Й";
        else if (ch == 1050)
            newString[i] ="К";    
        else if (ch == 1051)
            newString[i] ="Л";    
        else if (ch == 1052)
            newString[i] ="М";
        else if (ch == 1053)
            newString[i] ="Н";
        else if (ch == 1054)
            newString[i] ="О";
        else if (ch == 1055)
            newString[i] ="П";
        else if (ch == 1056)
            newString[i] ="Р";
        else if (ch == 1057)
            newString[i] ="С";
        else if (ch == 1058)
            newString[i] ="Т";
        else if (ch == 1059)
            newString[i] ="У";
        else if (ch == 1060)
            newString[i] ="Ф";
        else if (ch == 1061)
            newString[i] ="Х";
        else if (ch == 1062)
            newString[i] ="Ц";
        else if (ch == 1063)
            newString[i] ="Ч";
        else if (ch == 1064)
            newString[i] ="Ш";
        else if (ch == 1065)
            newString[i] ="Щ";
        else if (ch == 1066)
            newString[i] ="Ъ";
        else if (ch == 1067)
            newString[i] ="Ы";
        else if (ch == 1068)
            newString[i] ="Ь";
        else if (ch == 1069)
            newString[i] ="Э";
        else if (ch == 1070)
            newString[i] ="Ю";
        else if (ch == 1071)
            newString[i] ="Я";
        else if (ch == 1072)
            newString[i] ="а";
        else if (ch == 1073)
            newString[i] ="б";
        else if (ch == 1074)
            newString[i] ="в";
        else if (ch == 1075)
            newString[i] ="г";
        else if (ch == 1076)
            newString[i] ="д";
        else if (ch == 1077)
            newString[i] ="е";
        else if (ch == 1078)
            newString[i] ="ж";
        else if (ch == 1079)
            newString[i] ="з";
        else if (ch == 1080)
            newString[i] ="и";
        else if (ch == 1081)
            newString[i] ="й";
        else if (ch == 1082)
            newString[i] ="к";    
        else if (ch == 1083)
            newString[i] ="л";    
        else if (ch == 1084)
            newString[i] ="м";
        else if (ch == 1085)
            newString[i] ="н";
        else if (ch == 1086)
            newString[i] ="о";
        else if (ch == 1087)
            newString[i] ="п";
        else if (ch == 1088)
            newString[i] ="р";
        else if (ch == 1089)
            newString[i] ="с";
        else if (ch == 1090)
            newString[i] ="т";
        else if (ch == 1091)
            newString[i] ="у";
        else if (ch == 1092)
            newString[i] ="ф";
        else if (ch == 1093)
            newString[i] ="х";
        else if (ch == 1094)
            newString[i] ="ц";
        else if (ch == 1095)
            newString[i] ="ч";
        else if (ch == 1096)
            newString[i] ="ш";
        else if (ch == 1097)
            newString[i] ="щ";
        else if (ch == 1098)
            newString[i] ="ъ";
        else if (ch == 1099)
            newString[i] ="ы";
        else if (ch == 1100)
            newString[i] ="ь";
        else if (ch == 1101)
            newString[i] ="э";
        else if (ch == 1102)
            newString[i] ="ю";
        else if (ch == 1103)
            newString[i] ="я";
        //Eng
        else if (ch == 65)
            newString[i] ="A";
        else if (ch == 66)
            newString[i] ="B";
        else if (ch == 67)
            newString[i] ="C";
        else if (ch == 68)
            newString[i] ="D";
        else if (ch == 69)
            newString[i] ="E";
        else if (ch == 70)
            newString[i] ="F";
        else if (ch == 71)
            newString[i] ="G";
        else if (ch == 72)
            newString[i] ="H";
        else if (ch == 73)
            newString[i] ="I";
        else if (ch == 74)
            newString[i] ="J";
        else if (ch == 75)
            newString[i] ="K";    
        else if (ch == 76)
            newString[i] ="L";    
        else if (ch == 77)
            newString[i] ="M";
        else if (ch == 78)
            newString[i] ="N";
        else if (ch == 79)
            newString[i] ="O";
        else if (ch == 80)
            newString[i] ="P";
        else if (ch == 81)
            newString[i] ="Q";
        else if (ch == 82)
            newString[i] ="R";
        else if (ch == 83)
            newString[i] ="S";
        else if (ch == 84)
            newString[i] ="T";
        else if (ch == 85)
            newString[i] ="U";
        else if (ch == 86)
            newString[i] ="V";
        else if (ch == 87)
            newString[i] ="W";
        else if (ch == 88)
            newString[i] ="X";
        else if (ch == 89)
            newString[i] ="Y";
        else if (ch == 90)
            newString[i] ="Z";
        else if (ch == 97)
            newString[i] ="a";
        else if (ch == 98)
            newString[i] ="b";
        else if (ch == 99)
            newString[i] ="c";
        else if (ch == 100)
            newString[i] ="d";
        else if (ch == 101)
            newString[i] ="e";
        else if (ch == 102)
            newString[i] ="f";
        else if (ch == 103)
            newString[i] ="g";
        else if (ch == 104)
            newString[i] ="h";
        else if (ch == 105)
            newString[i] ="i";
        else if (ch == 106)
            newString[i] ="j";
        else if (ch == 107)
            newString[i] ="k";    
        else if (ch == 108)
            newString[i] ="l";    
        else if (ch == 109)
            newString[i] ="m";
        else if (ch == 110)
            newString[i] ="n";
        else if (ch == 111)
            newString[i] ="o";
        else if (ch == 112)
            newString[i] ="p";
        else if (ch == 113)
            newString[i] ="q";
        else if (ch == 114)
            newString[i] ="r";
        else if (ch == 115)
            newString[i] ="s";
        else if (ch == 116)
            newString[i] ="t";
        else if (ch == 117)
            newString[i] ="u";
        else if (ch == 118)
            newString[i] ="v";
        else if (ch == 119)
            newString[i] ="w";
        else if (ch == 120)
            newString[i] ="x";
        else if (ch == 121)
            newString[i] ="y";
        else if (ch == 122)
            newString[i] ="z";
        //Спец символы и цыфры
        else if (ch == 48)
            newString[i] ="0";
        else if (ch == 49)
            newString[i] ="1";
        else if (ch == 50)
            newString[i] ="2";
        else if (ch == 51)
            newString[i] ="3";
        else if (ch == 52)
            newString[i] ="4";
        else if (ch == 53)
            newString[i] ="5";            
        else if (ch == 54)
            newString[i] ="6";
        else if (ch == 55)
            newString[i] ="7";
        else if (ch == 56)
            newString[i] ="8";
        else if (ch == 57)
            newString[i] ="9";            
        else if (ch == 32) // Пробел
            newString[i] =" ";
        else if (ch == 40)
            newString[i] ="(";
        else if (ch == 41)
            newString[i] ="";
        //Непонятная билебарда
        else if (ch == 192)
            newString[i] ="А";
        else if (ch == 193)
            newString[i] ="Б";
        else if (ch == 194)
            newString[i] ="В";
        else if (ch == 195)
            newString[i] ="Г";
        else if (ch == 196)
            newString[i] ="Д";
        else if (ch == 197)
            newString[i] ="Е";
        else if (ch == 198)
            newString[i] ="Ж";
        else if (ch == 199)
            newString[i] ="З";
        else if (ch == 200)
            newString[i] ="И";
        else if (ch == 201)
            newString[i] ="Й";
        else if (ch == 202)
            newString[i] ="К";    
        else if (ch == 203)
            newString[i] ="Л";    
        else if (ch == 204)
            newString[i] ="М";
        else if (ch == 205)
            newString[i] ="Н";
        else if (ch == 206)
            newString[i] ="О";
        else if (ch == 207)
            newString[i] ="П";
        else if (ch == 208)
            newString[i] ="Р";
        else if (ch == 209)
            newString[i] ="С";
        else if (ch == 210)
            newString[i] ="Т";
        else if (ch == 211)
            newString[i] ="У";
        else if (ch == 212)
            newString[i] ="Ф";
        else if (ch == 213)
            newString[i] ="Х";
        else if (ch == 214)
            newString[i] ="Ц";
        else if (ch == 215)
            newString[i] ="Ч";
        else if (ch == 216)
            newString[i] ="Ш";
        else if (ch == 217)
            newString[i] ="Щ";
        else if (ch == 218)
            newString[i] ="Ъ";
        else if (ch == 219)
            newString[i] ="Ы";
        else if (ch == 220)
            newString[i] ="Ь";
        else if (ch == 221)
            newString[i] ="Э";
        else if (ch == 222)
            newString[i] ="Ю";
        else if (ch == 223)
            newString[i] ="Я";
        else if (ch == 224)
            newString[i] ="а";
        else if (ch == 225)
            newString[i] ="б";
        else if (ch == 226)
            newString[i] ="в";
        else if (ch == 227)
            newString[i] ="г";
        else if (ch == 228)
            newString[i] ="д";
        else if (ch == 229)
            newString[i] ="е";
        else if (ch == 230)
            newString[i] ="ж";
        else if (ch == 231)
            newString[i] ="з";
        else if (ch == 232)
            newString[i] ="и";
        else if (ch == 233)
            newString[i] ="й";
        else if (ch == 234)
            newString[i] ="к";    
        else if (ch == 235)
            newString[i] ="л";    
        else if (ch == 236)
            newString[i] ="м";
        else if (ch == 237)
            newString[i] ="н";
        else if (ch == 238)
            newString[i] ="о";
        else if (ch == 239)
            newString[i] ="п";
        else if (ch == 240)
            newString[i] ="р";
        else if (ch == 241)
            newString[i] ="с";
        else if (ch == 242)
            newString[i] ="т";
        else if (ch == 243)
            newString[i] ="у";
        else if (ch == 244)
            newString[i] ="ф";
        else if (ch == 245)
            newString[i] ="х";
        else if (ch == 246)
            newString[i] ="ц";
        else if (ch == 247)
            newString[i] ="ч";
        else if (ch == 248)
            newString[i] ="ш";
        else if (ch == 249)
            newString[i] ="щ";
        else if (ch == 250)
            newString[i] ="ъ";
        else if (ch == 251)
            newString[i] ="ы";
        else if (ch == 252)
            newString[i] ="ь";
        else if (ch == 253)
            newString[i] ="э";
        else if (ch == 254)
            newString[i] ="ю";
        else if (ch == 255)
            newString[i] ="я";
        else
            newString[i] ="?"; //Неизвестный символ
        i++;
        }
        String tempstr="";
        for(int b=0;b<(d+1);b++)
            tempstr += newString[b];

    return tempstr; // Возвращает результат
    }
}// Конец класа UTF_to_Rus
Ответ


Возможно похожие темы ...
Тема Автор Ответы Просмотры Последний пост
  Проблемы с полосками HP и MP у саммонеров. Magican 0 840 09-19-2022, 05:03 AM
Последний пост: Magican
  В поиске редкой проблемы ivashk 9 1,380 01-18-2021, 10:49 AM
Последний пост: ivashk
  При запуске game server на сайте (sw13) ошибка mysql 0 AndreDeiu 1 1,301 09-27-2020, 11:32 PM
Последний пост: Lord_Gothic
  Проблемы с импортом в квестах на сборке Open-Team devset 2 2,699 02-02-2020, 06:26 PM
Последний пост: Bonabo
  Mysql cjhrxSS 1 1,652 04-06-2018, 09:37 AM
Последний пост: cjhrxSS
  Проблемы с заливкой таблиц в бд l2jserver HF dbinst_gs a6y 3 1,723 10-08-2017, 11:01 PM
Последний пост: a6y
  Проблемы с работоспособностью города Deaspara 22 5,218 08-24-2016, 07:11 PM
Последний пост: Kensiro
  Проблемы с установкой баффера michail_ST 15 3,156 04-17-2016, 09:51 AM
Последний пост: michail_ST
  Проблемы с Гео при запуске GameServer Scream 17 4,338 04-04-2016, 08:19 AM
Последний пост: HiredKiller
  Потеря конекта с MySql flopix 3 1,288 02-23-2016, 12:30 AM
Последний пост: RedIst

Перейти к форуму:


Пользователи, просматривающие эту тему: 1 Гость(ей)