gpt4 book ai didi

java - 使用 spring 框架将重音字符存储到数据库时出现问题

转载 作者:行者123 更新时间:2023-12-01 05:45:29 26 4
gpt4 key购买 nike

我正在使用 Spring Framework 的存储过程类将一些数据插入到 SQL 2005 DB 中。类声明有点像:

       private class InsertShippingAddress extends StoredProcedure {
public InsertShippingAddress(final DataSource ds) {
super(ds, "usp_adiPromoInsertShippingDetail");
super.declareParameter(new SqlParameter("in_FirstName", Types.VARCHAR));

compile();
}
}

我正在执行 SP,如下所示:

     final InsertShippingAddress insertShippingAddress = new InsertShippingAddress(
getJdbcTemplate().getDataSource());
final Map<String, Object> inParams = new HashMap<String, Object>();
inParams.put("in_FirstName", name);
insertShippingAddress.execute(inParams);

现在的问题是,名称字符串包含法语中的重音字符,但在存储时,字符串 èüÀÔàé 以扭曲的方式存储为 eu¡AO^a`e´ 。但如果我真的通过 SQL Management Studio 执行 SP,它会正确保存。我不知道我哪里错了。请帮忙。

提前致谢,纳拉因

最佳答案

免责声明:我不是java程序员

问题可能出在这一行

  super.declareParameter(new SqlParameter("in_FirstName", Types.VARCHAR));

由于您使用的是 VARCHAR 类型,因此可能无法正确转换非 ASCII 字符。

也许您应该使用以下内容?

  super.declareParameter(new SqlParameter("in_FirstName", Types.NVARCHAR));

编辑

如果您无法使用 NVARCHAR 类型,一种解决方法可能是将字符串转换为十六进制,然后将其作为 Types.VARBINARY 传递到数据库(或类似的东西) - 数据库应该正确处理类型转换。我不知道 Spring 是否会让你这样做。

关于java - 使用 spring 框架将重音字符存储到数据库时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6054862/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com