CREATE TABLE LANGS (
IDIOMA char(2) NOT NULL,
PAIS char(2) NOT NULL,
TRADUC long varchar NOT NULL,
) CCSID UNICODE;
INSERT INTO LANGS (IDIOMA,PAIS,TRADUC) VALUES ('zh','TW','其他');
Class.forName("com.ibm.db2.jcc.DB2Driver");
...
Properties props = new Properties();
props.setProperty("user", user);
props.setProperty("password", pass);
props.setProperty("DB2CODEPAGE", "1208");
props.setProperty("retrieveMessagesFromServerOnGetMessage", "true");
con = DriverManager.getConnection(url, props);
...
Statement statement = con.createStatement();
statement.execute(sql);
...
statement.close();
con.close();
DB cfg获取
DB2数据库区域设置配置
Territorio de base de datos = en_US; Página de códigos de base de datos = 819 Conjunto de códigos de base de datos = iso8859-1 Código de país/región de base de datos = 1 Secuencia de clasificación de base de datos = UNIQUE Orden de clasificación alternativo (ALT_COLLATE) = IDENTITY_16BIT Tamaño de página de base de datos = 4096
语句正确执行,并且数据库中的行正确显示:
我认为这可能是一些编码问题在客户端,或服务器由于配置,文件或sql编码。
更新:
我还尝试用SQL加载一个UTF-8文件。文件正确加载,使用UTF-8字符调试SQL也正确传递给语句,但结果是相同的。
new InputStreamReader(new FileInputStream(file),"UTF-8")
...
private void executeLineByLine(Reader reader) throws SQLException {
StringBuffer command = new StringBuffer();
try {
BufferedReader lineReader = new BufferedReader(reader);
String line;
while ((line = lineReader.readLine()) != null) {
command = handleLine(command, line);
}
checkForMissingLineTerminator(command);
} catch (Exception e) {
String message = "Error executing: " + command + ". Cause: " + e;
printlnError(message);
throw new SQLException(message, e);
}
}
private StringBuffer handleLine(StringBuffer command, String line) throws SQLException, UnsupportedEncodingException {
String trimmedLine = line.trim();
if (lineIsComment(trimmedLine)) {
println(trimmedLine);
} else if (commandReadyToExecute(trimmedLine)) {
command.append(line.substring(0, line.lastIndexOf(delimiter)));
command.append(LINE_SEPARATOR);
println(command);
executeStatement(command.toString());
command.setLength(0);
} else if (trimmedLine.length() > 0) {
command.append(line);
command.append(LINE_SEPARATOR);
}
return command;
}
private void executeStatement(String command) throws SQLException, UnsupportedEncodingException {
boolean hasResults = false;
Statement statement = connection.createStatement();
hasResults = statement.execute(command);
printResults(statement, hasResults);
statement.close();
}
INSERT INTO LANGS (IDIOMA,PAIS,TRADUC) VALUES ('zh','TW','TEST1 其他 FIN TEST1');
但在数据库中,测试显示为:
TEST3 FIN TEST3
十六进制表示:
54 45 53 54 33 20 1A 1A 1A 1A 1A 1A 1A 1A 20 46 49 4E 20 54 45 53 54 33
T E S T 3 _ ? ? ? ? ? ? ? ? _ F I N _ T E S T 3
我认为DB2 Java客户机可能使用所有的Windows代码页(在本例中是ISO-8859-1或cp1252)而不是UTF-8,或者服务器使用表的主排序规则而不是替代排序规则来转换数据。
我需要添加用户名从Facebook到数据库,这些名称有UTF-8字符,如 (ą,č,ę,ė,į,š,ų,ū).当我把它添加到数据库中,例如字母看起来像
问题内容: 我正在使用 Ubuntu 9.04 我已经安装了以下软件包版本: 我已经这样配置: 我已经这样配置: 我已经从Pyodbc修订版中获取并使用“ ”进行了安装 我有一台装有 Microsoft SQL Server 2000 的Windows机器,安装在本地网络上,并在本地IP地址10.32.42.69上侦听。我有一个名为“ Common”的空数据库。我的用户“ sa”具有完全特权的密码
问题内容: 我首先尝试使用python将字符串存储在sqlite中,并得到以下消息: sqlite3.ProgrammingError:除非使用可以解释8位字节串的text_factory(如text_factory = str),否则不得使用8位字节串。强烈建议您改为将应用程序切换为Unicode字符串。 好的,我切换到Unicode字符串。然后我开始收到消息: sqlite3.Operatio
本文向大家介绍Python MySQLdb 使用utf-8 编码插入中文数据问题,包括了Python MySQLdb 使用utf-8 编码插入中文数据问题的使用技巧和注意事项,需要的朋友参考一下 最近帮伙计做了一个从网页抓取股票信息并把相应信息存入MySQL中的程序。 使用环境: Python 2.5 for Windows MySQLdb 1.2.2 for Python 2.5 MySQL 4
问题内容: 我必须用Java处理这种情况: 我从声明了encoding = utf-8的客户端收到XML格式的请求。不幸的是,它可能不包含utf-8字符,并且有必要从我这一边的xml中删除这些字符(旧式)。 让我们考虑一个示例,其中该无效XML包含£(磅)。 1)我将xml作为带有£的java字符串(我现在无法访问接口,但我很可能将xml作为java的字符串)。我可以使用replaceAll(£,
我需要在html页面上插入一个欧米茄(欧米茄)。我使用它的HTML转义代码来实现这一点,因此我可以编写并获得?。当我将它放入HTML元素中时,这一切都很好;但是,当我尝试将其放入我的JS中时,例如时,它将代码解析为JS,整个过程无法运行。有人知道怎么做吗?