gpt4 book ai didi

javascript - 将 UTF-8 数据插入 SQL Server 2012

转载 作者:行者123 更新时间:2023-11-30 00:28:38 25 4
gpt4 key购买 nike

我有一个 SQL Server 2012 数据库,其中一个表包含 2 列 UTF-8 数据(非英语。具体来说是泰米尔语)。我为这些列设置的数据类型是 nvarchar(500)。我从 jsp 页面(输入类型为文本)获取输入(UTF-8 数据)。我可以将该文本框的值成功地插入到 sql server 中,但是当我去查看该值时,它就像这样“...1;”我还确保在列值之前添加 N。这是代码:

Class.forName("com.microsoft.sqlserver.jdbc.SQLServerDriver");
con = java.sql.DriverManager.getConnection(url, id, pass);

String addbks = "insert into something.dbo." + Table + " (ID, BookName, Author, Owner, OwnerEmpID, Status, Reservation, Genre, StatusID) values (NEXT VALUE FOR " + Seq + ", N'" + BookName + "', N'" + AuthorName + "', '" + Name + "', '" + user2 + "', 'Available', NULL, '" + Genre + "', '1')";

其中 BookName 和 AuthorName 是我们谈到的两个列。我还将 BookName 和 AuthorName 转换为 UTF-8 格式 - 这是代码:

BookName = new String(BookName.getBytes("ISO-8859-1"),"UTF-8");
AuthorName = new String(AuthorName.getBytes("ISO-8859-1"),"UTF-8");

在 Body 标签下面,我还有以下内容:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

我仍然在数据库中得到特殊字符而不是实际数据。我怎样才能做到这一点?

编辑:郑重声明,如果我直接在 SQL Server 中插入数据,它就可以正常工作。这是查询:

select BookName, Author from tam_hist where bookname like N'%தமிழ்%'

结果:தண்ணீர்

最佳答案

所以在我们在评论部分闲聊之后,我了解到您的表中的集合需要更改,这是执行此操作的潜在查询:

ALTER TABLE tam_hist
ALTER COLUMN bookname NVARCHAR(500) COLLATE Indic_General_90_BIN;

我按照 this site 上的建议使用此排序规则.

如果您需要/想要更改整个数据库而不是特定列的排序规则,请阅读 this link .

这是您问题的基本复制:

DECLARE @Test TABLE ( bookName NVARCHAR(500) COLLATE Indic_General_90_BIN)

INSERT INTO @Test (bookName)
VALUES (N'தமிழ்')

SELECT *
FROM @Test
WHERE bookName LIKE N'%தமிழ்%'

对我来说,它返回了预期的结果。也许您的 SQL 语句有问题?如我所见,您正在连接字符串以创建查询,可能使用 perpared statements会解决您的问题吗?

关于javascript - 将 UTF-8 数据插入 SQL Server 2012,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30478024/

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