当前位置: 首页 > 面试题库 >

使用PHP FreeTDS扩展从MSSQL服务器获取UTF-8字符集的数据

姜俊逸
2023-03-14
问题内容

我似乎无法使用FreeTDS扩展名从MSSQL编码为UTF-8的数据中获取数据。

连接:

ini_set('mssql.charset', 'UTF-8');
$this->_resource = mssql_connect($config['servername'], $config['username'], $config['password']);

我无法使用任何其他扩展名。

我试过创建〜/ .freetds.conf

[global]
client charset = UTF-8

我试过将参数传递给php:

php -d mssql.charset="UTF-8" index.php

数据仍不在UTF-8中。

的PHP-我

mssql

MSSQL Support => enabled
Active Persistent Links => 0
Active Links => 0
Library version => FreeTDS

Directive => Local Value => Master Value
mssql.allow_persistent => On => On
mssql.batchsize => 0 => 0
mssql.charset => no value => no value
mssql.compatability_mode => Off => Off
mssql.connect_timeout => 5 => 5
mssql.datetimeconvert => On => On
mssql.max_links => Unlimited => Unlimited
mssql.max_persistent => Unlimited => Unlimited

有想法吗?


问题答案:

有时,MSSQL和UTF-8相当痛苦。我不得不手动将其转换。问题:MSSQL实际上不知道并不支持UTF-8。

从数据库值转换为UTF-8:

mb_detect_encoding($value, mb_detect_order(), true) === 'UTF-8' ? $value : mb_convert_encoding($value, 'UTF-8');

从UTF-8转换为数据库值:

mb_convert_encoding($value, 'UCS-2LE', mb_detect_encoding($value, mb_detect_order(), true));

幸运的是,我使用的是Doctrine,所以我所要做的就是创建一个自定义的StringType实现。



 类似资料:
  • 问题内容: 我试图在这段代码中使用常量而不是字符串文字: 经常出现在代码中,最好是引用一些变量。您知道我可以在JDK中找到这样的变量吗? 顺便说一句,顺便说一句,这样的常数是不好的设计:公共静态文字…不是数据复制的解决方案 问题答案: 在Java 1.7+中,java.nio.charset.StandardCharsets定义用于包括的常量。 对于Android:minSdk 19

  • 我正在Ubuntu中运行httpd+mod_jk+2个tomcat服务器。当我以非拉丁语言提交表单时,我会在DB中得到垃圾。如果我通过Tomcat提交相同的表单,直接绕过httpd,那么一切看起来都很好。以下是我的配置: /ETC/APACHE2/CONF.D/CHARSET: Tomcat1: Tomcat2: JDBC连接: jdbc:mysql://localhost:3306/myapp?

  • 问题内容: 我已经使用Java Mail API 来发送电子邮件。我正在使用联系人公式器来发送输入,该输入必须发送到特定的电子邮件。 尽管我是丹麦人,但电子邮件的发送没有问题,因此,在主题和电子邮件文本中,我需要三个丹麦字符,分别是“æ”,“ø”和“å”。 因此,我已经看到可以使用UTF-8字符编码来提供这些字符,但是在发送邮件时,我只会看到一些奇怪的字母-‘㦒,’㸒和’㥒-而不是丹麦

  • 问题内容: 我必须用Java处理这种情况: 我从声明了encoding = utf-8的客户端收到XML格式的请求。不幸的是,它可能不包含utf-8字符,并且有必要从我这一边的xml中删除这些字符(旧式)。 让我们考虑一个示例,其中该无效XML包含£(磅)。 1)我将xml作为带有£的java字符串(我现在无法访问接口,但我很可能将xml作为java的字符串)。我可以使用replaceAll(£,

  • 问题内容: 我试图使用Angular从远程WS以Json格式获取数据,但遇到了一些麻烦。数据正确地来自Web服务,但是我不能在控制器内部使用它。这是为什么?角度代码: HTML: 问题答案: 您应该将$ http.get放入控制器中。 而且,Web服务返回的对象不是数组。因此,您的ng-repeat应该是这样的: 这是一个工作示例:

  • 我已经将一个数据库从mysql迁移到SQL Server(politics),这是使用UTF8的原始mysql数据库。 现在我读到https://dba.stackexchange.com/questions/7346/sql-server-2005-2008-utf-8-collation-charsetSQL服务器2008不支持utf8,这是一个笑话吗? SQL Server承载多个数据库,大