Привет!
>> Влад, умоляю, ставлю бутылку Firebird - покажи пример, как этот чарсет
>> прописать! Везде говорится, что его надо указывать, но как - зажали.
Так, похоже Влад завязал и уже не пьет. Куда мир катится...
>> Делали так:
>> Properties connInfo = new Properties();
>> connInfo.put("user", "sysdba");
>> connInfo.put("password", "masterkey");
>> connInfo.put("charSet", "UTF-8");
>> Connection con = DriverManager.getConnection (url, connInfo);
>> ......
>>
>> Но материццо!!!
> Вроде правильно, можно попробовать вместо charSet указать
> put("encoding", "UTF8").
В общем, все оказалось гораздо проще:
---------------------------------------------------
1. добавляем <%@ page import ="java.util.*" %>
2. вместо строки
Connection con = DriverManager.getConnection (url,"sysdba","masterkey");
пишем
Properties connInfo = new java.util.Properties();
connInfo.put("user", "sysdba");
connInfo.put("password", "masterkey");
connInfo.put("charSet", "UTF-8"); //Works correct
//connInfo.put("encoding", "UTF8"); //Works correct too
//connInfo.put("charSet", "UTF8"); //Incorrect:The server encountered
an internal error...
Connection con = DriverManager.getConnection (url, connInfo);
3. запускаем - все работает..;-) все три строки (EN, RO и RU) записываются в
базу в уникоде и правильно считываются из нее...
4. нужно еще будет при чтении первой строки пропустить 3 первых байта... в этом
варианте они тоже вписались в базу... хотя в результате jsp и не видны... но
это уже другая история...:-))
<[EMAIL PROTECTED] contentType="text/html"%>
<[EMAIL PROTECTED] pageEncoding="UTF-8"%>
<%@ page import ="java.net.*" %>
<%@ page import ="java.sql.*" %>
<%@ page import ="java.io.*" %>
<%@ page import ="java.util.*" %>
<html>
<head><meta http-equiv="Content-Type" content="text/html;
charset=UTF-8"></head>
<body>
<%
String url = "jdbc:firebirdsql://localhost:3050/test1";
Class.forName("org.firebirdsql.jdbc.FBDriver"); //Load driver
//Connection con = DriverManager.getConnection
(url,"sysdba","masterkey");
Properties connInfo = new java.util.Properties();
connInfo.put("user", "sysdba");
connInfo.put("password", "masterkey");
connInfo.put("charSet", "UTF-8"); //Works correct
//connInfo.put("encoding", "UTF8"); //Works correct too
//connInfo.put("charSet", "UTF8"); //Incorrect : The server encountered
an internal error...
Connection con = DriverManager.getConnection (url, connInfo);
Statement stmt = con.createStatement();
//Let's read Unicode format from file. There are lines: three languages
BufferedReader br = new BufferedReader(new InputStreamReader(
new FileInputStream("D:/db/WebApplication2/utf8.txt"),"UTF-8"));
String utf_correct = br.readLine();
out.println("Correct string EN: " + utf_correct);
String str = "INSERT INTO language (name) VALUES(?)";
PreparedStatement ps = con.prepareStatement(str);
ps.setString(1, utf_correct);
ps.executeUpdate();
%><br><%
utf_correct = br.readLine();
out.println("Correct string RO: " + utf_correct);
ps.setString(1, utf_correct);
ps.executeUpdate();
%><br><%
utf_correct = br.readLine();
out.println("Correct string RU: " + utf_correct);
ps.setString(1, utf_correct);
ps.executeUpdate();
br.close();
%><br><br><%
stmt = con.createStatement();
ResultSet result = stmt.executeQuery("SELECT * FROM language");
int i=0;
while (result.next())
{
int id = result.getInt("language_id");
String name = result.getString("name");
out.println("ID: " + id);
out.println("Name: " + name);
%><br><%
i++;
}
%>
</body>
</html>
---------------------------------------------------
Всем откликнувшимся - спасибо, ларчик открывался просто. Теперь у меня
спокойная рабочая обстановка на работе и дома :))
--
Best regards,
Sergey mailto:[EMAIL PROTECTED]