gpt4 book ai didi

sql-server - 在不同编码的 SQL Server 中搜索波斯语字符和单词

转载 作者:行者123 更新时间:2023-12-05 01:03:02 25 4
gpt4 key购买 nike

我有一个包含波斯语单词并使用 ANSI 编码保存的文本文件。当我尝试从文本文件中读取波斯语单词时,我得到了一些字符,例如“?”。为了解决这个问题,我将文件编码更改为 UTF8 并重新编写了文本文件。以下是更改文件编码的方法:

    public void Convert2UTF8(string filePath)
{
//first, read the text file with "ANSI" endocing
StreamReader fileStream = new StreamReader(filePath, Encoding.Default);
string fileContent = fileStream.ReadToEnd();
fileStream.Close();
//Now change the file encoding and replace it with the UTF8
StreamWriter utf8Writer = new StreamWriter(filePath.Replace(".txt", ".txt"), false, Encoding.UTF8);
utf8Writer.Write(fileContent);
utf8Writer.Close();
}

现在第一个问题解决了;但是,这里还有一个问题:每次我想从 SQL Server 数据库表中搜索一个波斯语单词时,结果为空,而数据库表中确实存在记录。

找到表中存在的波斯语单词的解决方案是什么?我目前使用的代码如下:

SELECT * FROM [dbo].[WordDirectory] 
WHERE Word = N'کلمه'

Word是保存波斯语单词的字段,字段类型为NVARCHAR。我的 SQL 服务器版本是 2012。我应该更改排序规则吗?

最佳答案

DECLARE @Table TABLE(Field NVARCHAR(4000) COLLATE Frisian_100_CI_AI)

INSERT INTO @Table (Field) VALUES
(N'همهٔ افراد بش'),
(N'می‌آیند و حیثیت '),
(N'ميشه آهسته تر صحبت کنيد؟'),
(N'روح'),
(N' رفتار')

SELECT * FROM @Table
WHERE Field LIKE N'%آهسته%'

两个查询返回相同的结果

RESULT Set:  ميشه آهسته تر صحبت کنيد؟

您必须确保在插入值时添加前缀,然后使用 N 告诉 sql server 在传递的字符串中可以有 unicode 字符。在 Select 语句中搜索字符串时也是如此。

关于sql-server - 在不同编码的 SQL Server 中搜索波斯语字符和单词,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21957438/

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