通过 SQL Express 在 MS SQL 中存储中文、韩文、英文等

Storing Chinese, Korean, English, etc in MS SQL through SQL Express

提问人:gcdev 提问时间:3/28/2012 更新时间:8/24/2017 访问量:2924

问:

我正在使用 MS SQL 2008 Express 连接到我拥有数据库的共享 MS SQL 2008 服务器。数据库的默认排序规则当前为 。最终,我想在数据库中存储英语、韩语、中文和任何其他可以想象的语言。我首先使用以下 SQL 代码(我在这里找到:http://social.msdn.microsoft.com/Forums/en-US/transactsql/thread/5d2ea1a2-32e1-4a82-b6e3-17d2b898babc/)来测试:SQL_Latin1_General_CP1_CI_AS

create table zhongwen(mingzi nvarchar(10))
go
insert into zhongwen values (N'有方')
insert into zhongwen values (N'李杰')
insert into zhongwen values (N'空炮鸡蛋')
go
select * from zhongwen
go
create procedure zhongwenfind 
 (@mingzi nvarchar(10))
 AS
 SELECT mingzi FROM zhongwen 
 WHERE mingzi  = @mingzi  
go
exec zhongwenfind N'李杰'
go
drop table zhongwen
go
drop procedure zhongwenfind
go

当我在 MS SQL 2008 Express 中运行此代码时,结果仅显示几个薄框。如果我复制一组薄框并将它们粘贴到此处(堆栈溢出提问文本区域),它们将显示为适当的字符(我在这里:空炮鸡蛋)。是否可以将 MS SQL 2008 Express 设置为正确显示它们?

更重要的是,当我运行我的PHP网站时,最终应该向公众正确显示字符,我只得到问号(????)。我正在用于查询数据库。我的 HTML5 HEAD 顶部有以下代码:mssql_query()

<meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>

...以及我的PHP中的以下代码:

header('Content-Type:text/html; charset=UTF-8');

...但我只看到问号。所以,总结一下,有 2 个问题:

1) 如何在 MS SQL 2008 Express 中正确显示此内容?

2)如何在PHP / HTML中正确显示此显示?

提前致谢!

PHP SQL-SERVER-2008 UTF-8 字符编码 排序规则

评论

0赞 gcdev 3/29/2012
我现在将我的 PHP 文件(通过 Notepad++)保存在 UTF8 中,没有 BOM。有了这个额外的设置,当我将汉字粘贴到PHP文件本身中,通过FTP上传到服务器并查看时,这些字符会正确显示。但是,从数据库中提取的字符仍然只是问号(????)。为了从数据库中获取,我正在使用 mssql_query 和 mssql_fetch_array,如果这很重要的话。
0赞 gcdev 3/31/2012
所以我想我为我的特定问题找到了解决方法。SQL 数据库是从 MS Access 数据库升级而来的。显然,扩大规模的过程并没有做我认为它应该做的事情。因此,我尝试将 MS Access 数据库上传到网站,然后运行一个 PHP 页面,该页面从 Access 中选择我的所有非英语数据,并用它来更新 MS SQL 数据库。一旦我这样做了,一切都像魅力一样运作。如果没有人想出更好的东西,我会把我的代码发布给感兴趣的人。

答:

0赞 Surinder Singh 4/4/2012 #1

我在使用重音字符(???)时在我的应用程序中遇到了同样的问题,我通过将数据库、表和文本字段的编码更改为 utf8_unicode_ci以及文件编码来解决它。如果您在实时服务器上工作,请在转换前备份数据库。此外,在更新表和字段排序规则之前,将文本字段数据存储到 Blob。

希望对你有所帮助!

评论

3赞 gcdev 4/5/2012
MS SQL 没有utf8_unicode_ci排序规则。您可能正在考虑 MySQL?stackoverflow.com/questions/5059781/......
0赞 Rohit Bathija 8/24/2017 #2

我有类似的要求,我能够解决这个问题,并且能够显示韩语和日语 [SQL Server 2008 R2 Express 和 HTML + ASP.NET]

  1. 对于 SQL Server 中的数据库排序规则,请使用 SQL_Latin1_General_CP1_CI_AS

  2. 在服务器/计算机上部署代码时 - 确保 HTML 文件保存为 UTF-8 编码 (要检查这一点 - 打开文件>另存为>检查编码)