PHP + SQL Server - 如何为连接设置字符集?

PHP + SQL Server - How to set charset for connection?(PHP + SQL Server - 如何为连接设置字符集?)
本文介绍了PHP + SQL Server - 如何为连接设置字符集?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试通过 php 在 SQL Server 数据库中存储一些数据.

I'm trying to store some data in a SQL Server database through php.

问题是特殊字符没有正确转换.我的应用程序的字符集是 iso-8859-1服务器使用的是windows-1252.

Problem is that special chars aren't converted properly. My app's charset is iso-8859-1 and the one used by the server is windows-1252.

在插入之前手动转换数据没有帮助,似乎有一些转换正在进行中.

Converting the data manually before inserting doesn't help, there seems to be some conversion going on.

运行 SQL 查询set char_convert off"也无济于事.

Running the SQL query 'set char_convert off' doesn't help either.

有人知道我怎样才能让它工作吗?

Anyone have any idea how I can get this to work?

我试过 ini_set('mssql.charset', 'windows-1252');也一样,但也没有结果.

I have tried ini_set('mssql.charset', 'windows-1252'); as well, but no result with that one either.

推荐答案

客户端字符集是必要的,但还不够:

Client charset is necessary but not sufficient:

ini_set('mssql.charset', 'UTF-8');

我搜索了两天如何通过 PHP 将 UTF-8 数据(来自网络表单)插入到 MSSQL 2008 中.我到处都读到你不能,你需要先转换到 UCS2(就像 cypher 的解决方案推荐的那样).在 Windows 上 SQLSRV 据说是一个很好的解决方案,我无法尝试,因为我是在 Mac OSX 上开发的.

I searched for two days how to insert UTF-8 data (from web forms) into MSSQL 2008 through PHP. I read everywhere that you can't, you need to convert to UCS2 first (like cypher's solution recommends). On Windows SQLSRV said to be a good solution, which I couldn't try, since I am developing on Mac OSX.

但是,FreeTDS 手册(PHP mssql 在 OSX 上使用的)说在开头引用前添加一个字母N":

However, FreeTDS manual (what PHP mssql uses on OSX) says to add a letter "N" before the opening quote:

mssql_query("INSERT INTO table (nvarcharField) VALUES (N'űáúőűá球最大的采购批发平台')", +xon);

根据这个讨论,N 字符告诉服务器转换为 Unicode.https://softwareengineering.stackexchange.com/questions/155859/why-do-we-need-to-put-n-before-strings-in-microsoft-sql-server

According to this discussion, N character tells the server to convert to Unicode. https://softwareengineering.stackexchange.com/questions/155859/why-do-we-need-to-put-n-before-strings-in-microsoft-sql-server

这篇关于PHP + SQL Server - 如何为连接设置字符集?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!

本站部分内容来源互联网,如果有图片或者内容侵犯您的权益请联系我们删除!

相关文档推荐

Convert JSON integers and floats to strings(将JSON整数和浮点数转换为字符串)
in php how do I use preg replace to turn a url into a tinyurl(在php中,如何使用preg替换将URL转换为TinyURL)
all day appointment for ics calendar file wont work(ICS日历文件的全天约会不起作用)
trim function is giving unexpected values php(Trim函数提供了意外的值php)
Basic PDO connection to MySQL(到MySQL的基本PDO连接)
PHP number_format returns 1.00(Php number_Format返回1.00)