|
|
|
И раз и ещё раз.... короче кодировка.
|
|||
|---|---|---|---|
|
#18+
В базе данных лежит русский текст в кодировке юникод - всё замечательно просматривается и тд и тп. Из базы данных вытаскивается стринг и присваивается переменной data. После этого делается Код: plaintext и на выходе вижу вполне корректный русский текст. С одним но... Все большие буквы И представлены в виде вопросиков. Вопрос: 1)какого все буквы представленны корректно, а вот заглавная И выпендривается? 2)Как объяснить яве некорректность её интерпретаций моих указаний? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 12:32 |
|
||
|
И раз и ещё раз.... короче кодировка.
|
|||
|---|---|---|---|
|
#18+
в базе данные хранятся в UTF-8* ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 12:32 |
|
||
|
И раз и ещё раз.... короче кодировка.
|
|||
|---|---|---|---|
|
#18+
Может быть это JDBC драйвер глючит, когда данные из БД берет. У меня такое c MySQL было. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 14:53 |
|
||
|
И раз и ещё раз.... короче кодировка.
|
|||
|---|---|---|---|
|
#18+
Не.... походу выяснилось что это любую utf-8 стрингу он так читает. Более подробно:имеется файл в utf-8 кодировке. В файле xml и русский текст. Вчитываю файл в дом и отыскиваю нужный мне нод. Выдираю текст. Просматриваю его через системный утпут (у меня idea). Выходят крякохябры. Просматриваю new String(data.getBytes(), "UTF-8"); Всё ништяк кроме И. Аттачу к тексту с двух сторон теги, обзываю хмл и пытаюсь снова засунуть в дом - ругается, говорит invalid byte какой-то of UTF-8 sequence. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 17:29 |
|
||
|
И раз и ещё раз.... короче кодировка.
|
|||
|---|---|---|---|
|
#18+
тип String в Java это уже юникод автоматом, поэтому вот это - new String(data.getBytes(), "UTF-8") для вывода на консоль как то странно. Кодирвку для вывода на консоль указывать нужно как то подругому, как не помню. И еще, консоль это не показатель, у меня линух, есть 3-и консоли от разных производителей, на каждой из них своего вида кракозябы, под виндозой свои, под соляркой в консоле тоже есть на что посмотреть :)) Это я все одну и ту же программу запускал естественно. Самый верный вариант, это записать вывод в файл и шестнадцатиричным редактором посмотреть, что и как там. С консолью и русскими буквами лучше не связываться, пиши все по англицки. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 18:39 |
|
||
|
И раз и ещё раз.... короче кодировка.
|
|||
|---|---|---|---|
|
#18+
авторИ еще, консоль это не показательПоэтому и указал что консоль в идее (индовоз) Полученный таким образом стринг будучи записан в файл корректно воспринимается в кодировке ютф-8 (файл опеноффис так что кодировка только ютф-8). И естессно отказ от кирилицы сильно всё упростил бы но это не приемлемо исходя из целей задачи ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 18:58 |
|
||
|
И раз и ещё раз.... короче кодировка.
|
|||
|---|---|---|---|
|
#18+
У меня вот такой вопрос.. хотя надо было новый топик создавать.. но он как раз по этой теме, может вы сможете ответить. И так, у меня есть база, весь текст лежит в кодировке cp1251, мускул версии 4.0.12-nt. Когда я делаю ResultSet rs = stmt.executeQuery("Select * from tablename Where name = 'Шурик'"); то у меня ничего не выводится хотя у меня есть такие поля как "Шурик". Так вот собственно и вопрос как мне этот запрос( а он, как я понимаю в уникоде, т.к. String это уникод) переделать так чтобы он мог выполнится. Насколько я знаю MySQL работает тока с анси сторками, а тут вот уникод.. Помогите кто может.. уже долго парюсь.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.05.2005, 19:28 |
|
||
|
И раз и ещё раз.... короче кодировка.
|
|||
|---|---|---|---|
|
#18+
Код: plaintext если я не ошибаюсь, то есть важны параметры characterEncoding=windows-1251 useUnicode=true ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 09:43 |
|
||
|
И раз и ещё раз.... короче кодировка.
|
|||
|---|---|---|---|
|
#18+
Поэтому и указал что консоль в идее (индовоз) А при чем тут вообще консоль от IDEA? У тебя конечные пользователи тоже будут твою програму в IDEA запускать? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 10:50 |
|
||
|
И раз и ещё раз.... короче кодировка.
|
|||
|---|---|---|---|
|
#18+
Deady Код: plaintext если я не ошибаюсь, то есть важны параметры characterEncoding=windows-1251 useUnicode=true Я в курсе про это параметр.. короче я всзял мускул версии 4.1 т.к. он понимает уникод и переделал базу в уникод и теперь всё пашет. А вот и про UTF8 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 14.05.2005, 17:08 |
|
||
|
И раз и ещё раз.... короче кодировка.
|
|||
|---|---|---|---|
|
#18+
У меня база на MySQl 3.23. Данные получаю, русские буквы ввиде ?. Попытался переделать указанный вами код, но появились ошибки типа: C:\j2sdk1.4.2_06\bin>javac JdbcExample4.java JdbcExample4.java:17: unclosed string literal con = DriverManager.getConnection("jdbc:mysql://192.168.120.56/RBBase?user=login&password=passw&characterEncoding=windows-1251&useUnicode=true); ^ JdbcExample4.java:20: ')' expected System.out.println("Successfully connected to MySQL server..."); ^ 2 errors Получается надо не в запросе кодировку менять, а при обращении к базе данных? Пробовал ещё так: import java.sql.*; import java.io.PrintStream; public class MySQL4 { public static void main(String args[]) { Connection con = null; try { Class.forName("com.mysql.jdbc.Driver").newInstance(); con = DriverManager.getConnection("jdbc:mysql://IP/DBname", "login","passw"); } try{ // Создаю поток, который перекодирует символы из CP1251 в CP866 // и выводит все это в System.out PrintStream pst = new PrintStream(System.out, true, "CP866"); // Устанавливаю этот поток в качестве выходного для программы System.setOut(pst); // Все, написанные здесь символы будут автоматически перекодированы // в CP866 System.out.println("Подключение к данным из таблицы - это пишется по русски"); } catch (Exception e){ e.printStackTrace(System.out); } try{ Statement statement = con.createStatement(); ResultSet resultset = statement.executeQuery("Select * from table"); while ( resultset.next() ) { //PrintStream pst = new PrintStream(System.out, true, "CP866"); //System.setOut(pst); System.out.println( resultset.getString( "NAME" ) + " "); } //resultset.setCharacterEncoding("Cp1251"); Пробовал и сюда вставить resultset.close(); statement.close(); }catch ( SQLException sqle ) { System.out.println( "jdbc error: " + sqle ); } finally { try { if(con != null) con.close(); } catch(SQLException e) {} } } } Говорят можно предварительно послать SQL запрос set character set cp1251_koi8. Как мне быть? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.07.2005, 09:26 |
|
||
|
|

start [/forum/topic.php?fid=59&fpage=795&tid=2152017]: |
0ms |
get settings: |
10ms |
get forum list: |
14ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
33ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
27ms |
get tp. blocked users: |
1ms |
| others: | 239ms |
| total: | 342ms |

| 0 / 0 |
