转换/铸造nvarchar

nofu1

成员
加入
10月30日,2020年
消息
23
编程经验
Beginner
大家好;

这一直令我难过的一段时间。我有一个类似于下面的表结构来举行法语字
C#:
create table metest
(
 id numeric
 ,desc_info nvarchar

)

因此,我知道nvarchar倾向于将数据存储为字节,因此当我写入SELECT ID,来自MESEST的SELECT ID,如何确保DESC_INFO显示法国符号。我没有看到法国象征,如('),而是我看到一些奇怪的ysymbot
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,553
地点
悉尼,澳大利亚
编程经验
10+
您的应用程序和数据库之间无需做任何事情。默认情况下,字符串是Unicode。如果保存正确的数据,那么您将检索正确的数据。如果您没有看到正确的数据,那么您将在保存之前或在检索后突破它。我们不知道你在任何一方都做了什么,所以我们不知道它在哪里爆发。我建议您首先在两端调试您的应用程序,以确保数据是您所期望的所有点,如果不是,请看看它的位置。如果您仍然无法解决问题,至少您可以向我们提供所有相关信息。
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,553
地点
悉尼,澳大利亚
编程经验
10+
我知道nvarchar倾向于将数据存储为字节
You don't know that at all. At the lowest level, all data is stored as bytes because that's all a computer can store. The nvarchar data type is no different to any other in that regard. At a higher level though, nvarchar data is stored as text, just like varchar data is. In either case, you simply save or retrieve a String in your .NET code and the database takes care of any encoding details based on the data type.
 

nofu1

成员
加入
10月30日,2020年
消息
23
编程经验
Beginner
You don't know that at all. At the lowest level, all data is stored as bytes because that's all a computer can store. The nvarchar data type is no different to any other in that regard. At a higher level though, nvarchar data is stored as text, just like varchar data is. In either case, you simply save or retrieve a String in your .NET code and the database takes care of any encoding details based on the data type.
嗨JMCIHINNEY每当我在SSMS写一下查询时,我倾向于看到法国人物的奇怪符号,如何看待实际符号。请注意,这不是.NET代码
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,553
地点
悉尼,澳大利亚
编程经验
10+
本网站专用于C#编程,SQL Server论坛适用于与SQL Server相关的C#问题。这个论坛的描述是:
与C#开发有关的讨论与SQL Server和MSDE相关
我不会关闭这个帖子,但请记住未来。您可以找到一个专用的SQL Server站点,更适合专用的SQL Server问题。始终提供所有相关信息也很重要。如果您的问题特定于SSMS中的查询,而不是相关信息。
 

nofu1

成员
加入
10月30日,2020年
消息
23
编程经验
Beginner
好的,我不知道,所以我的问题在以下例子方面,我可以在我的nvarchar(2000)列中保存下面的单词s'il vousplaît,它被称为desc_info,但是当我从metest写一个select *时,单词在SSM中不正确显示。当我在SSMS编写SELECT语句时,如何将其显示为S'il VousPlaît
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,553
地点
悉尼,澳大利亚
编程经验
10+
我刚刚将法国文本从帖子复制到使用SSMS的表格中,我没有看到重音字符的问题。您使用的是,您使用的是什么版本的SQL Server和SSM,数据库的排序是什么?
 
Last edited:

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,578
地点
切萨皮克,va.
编程经验
10+
根据我的经验,整理是在处理国际化和SQL Server时查看的关键设置。
 

nofu1

成员
加入
10月30日,2020年
消息
23
编程经验
Beginner
我刚刚将法国文本从帖子复制到使用SSMS的表格中,我没有看到重音字符的问题。您使用的是,您使用的是什么版本的SQL Server和SSM,数据库的排序是什么?
我正在使用Microsoft SQL Server 2019 - 15.0,SSMS 18.7.1和Latin1_General_Ci_As,但我尝试将其更改为如下所示的查询中的其他沟通

C#:
select id, desc_info collate Latin1_General from metest

但被告知它是无效的整理
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,578
地点
切萨皮克,va.
编程经验
10+

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,578
地点
切萨皮克,va.
编程经验
10+
我可以在我的nvarchar(2000)列中保存以下单词S'il VousPlaît,该列被称为desc_info
你究竟如何拯救这个词?您表示您没有使用C#,所以您使用什么语言写入数据库?该语言如何处理Unicode字符串?尤其是注定要存储在SQL Server中的Unicode字符串?
 

jmplhinney.

C#论坛主持人
工作人员
加入
2011年4月23日
消息
3,553
地点
悉尼,澳大利亚
编程经验
10+
我将您的文本直接复制到SSMS中,没有问题。你能这样做吗?如果你可以看出这个问题确实是如何将数据放入数据库中,否则任何关于SSM的谈话都不会真正相关。
 

nofu1

成员
加入
10月30日,2020年
消息
23
编程经验
Beginner
抱歉迟到的回复,来源是一个CSV文件,我试图解决了几种方法来解决它。我注意到,我必须重新设计我的表来使用所有NVARCHAR列,并使用SSDT作为Unicode进口数据,因为它正常工作,我发现有点奇怪。

只是另一个快速的问题,
要求
如果有两个CSV文件,其中一个CSV包含两列,另一列包含4列。

潜在的解决方案
您是否必须创建两个不同的表,并确保您的表都具有NVARCHAR列,同样创建两个不同的数据流以将其使用SSDT导入数据库

或者有更好的方法来做。

提前致谢
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,578
地点
切萨皮克,va.
编程经验
10+
这意味着创建CSV文件的人将数据保存到特定代码页中编码的CSV中,而不是将CSV保存为UTF-8。你必须找到那个人和 击败他们的头部和肩膀 询问他们使用的代码页以便您可以将数据重新加载到Unicode中,然后将数据存储到数据库中作为Unicode。
 
最佳 底部