summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrank M. Kromann <fmk@php.net>2005-12-21 22:44:04 +0000
committerFrank M. Kromann <fmk@php.net>2005-12-21 22:44:04 +0000
commit8560728ae081ae8bbb11ca86931d04d7af14e45d (patch)
treed6329a22599f1e0fd5d594e022c12149387f77d6
parent42a83a6fc97d3a1017f2230471c017b2ab0b5715 (diff)
downloadphp-git-8560728ae081ae8bbb11ca86931d04d7af14e45d.tar.gz
Fix #35730 Use correct character encoding with FreeTDS
-rw-r--r--NEWS1
-rw-r--r--ext/mssql/php_mssql.c7
-rw-r--r--ext/mssql/php_mssql.h3
-rw-r--r--php.ini-dist5
-rw-r--r--php.ini-recommended5
5 files changed, 20 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 2c1507c5df..39b5b1f562 100644
--- a/NEWS
+++ b/NEWS
@@ -26,4 +26,5 @@ PHP NEWS
the part of haystack before or after first occurence of needle. (Johannes)
- Added possibility to check in which extension an internal function was
defined using reflection API. (Johannes)
+- Fixed bug #35730 (Use correct character encoding, and allow setting it) (Frank)
- Fixed bug #34286 (__toString() behavior is inconsistent). (Marcus)
diff --git a/ext/mssql/php_mssql.c b/ext/mssql/php_mssql.c
index e9a7f064ec..554d834b9a 100644
--- a/ext/mssql/php_mssql.c
+++ b/ext/mssql/php_mssql.c
@@ -141,6 +141,9 @@ PHP_INI_BEGIN()
STD_PHP_INI_BOOLEAN("mssql.datetimeconvert", "1", PHP_INI_ALL, OnUpdateBool, datetimeconvert, zend_mssql_globals, mssql_globals)
STD_PHP_INI_BOOLEAN("mssql.secure_connection", "0", PHP_INI_SYSTEM, OnUpdateBool, secure_connection, zend_mssql_globals, mssql_globals)
STD_PHP_INI_ENTRY_EX("mssql.max_procs", "-1", PHP_INI_ALL, OnUpdateLong, max_procs, zend_mssql_globals, mssql_globals, display_link_numbers)
+#ifdef HAVE_FREETDS
+ STD_PHP_INI_ENTRY("mssql.charset", "", PHP_INI_ALL, OnUpdateString, charset, zend_mssql_globals, mssql_globals)
+#endif
PHP_INI_END()
/* error handler */
@@ -495,7 +498,9 @@ static void php_mssql_do_connect(INTERNAL_FUNCTION_PARAMETERS, int persistent)
#endif
#ifdef HAVE_FREETDS
- DBSETLCHARSET(mssql.login, "ISO-8859-1");
+ if (MS_SQL_G(charset) && strlen(MS_SQL_G(charset))) {
+ DBSETLCHARSET(mssql.login, MS_SQL_G(charset));
+ }
#endif
DBSETLAPP(mssql.login,MS_SQL_G(appname));
diff --git a/ext/mssql/php_mssql.h b/ext/mssql/php_mssql.h
index 17e5d4d10e..9c668ef368 100644
--- a/ext/mssql/php_mssql.h
+++ b/ext/mssql/php_mssql.h
@@ -158,6 +158,9 @@ ZEND_BEGIN_MODULE_GLOBALS(mssql)
zend_bool allow_persistent;
char *appname;
char *server_message;
+#ifdef HAVE_FREETDS
+ char *charset;
+#endif
long min_error_severity, min_message_severity;
long cfg_min_error_severity, cfg_min_message_severity;
long connect_timeout, timeout;
diff --git a/php.ini-dist b/php.ini-dist
index eefaf9f22b..426d4c30a1 100644
--- a/php.ini-dist
+++ b/php.ini-dist
@@ -1046,6 +1046,11 @@ mssql.secure_connection = Off
; FreeTDS defaults to 4096
;mssql.max_procs = -1
+; Specify client character set.
+; If empty or not set the client charset from freetds.comf is used
+; This is only used when compiled with FreeTDS
+;mssql.charset = "ISO-8859-1"
+
[Assertion]
; Assert(expr); active by default.
;assert.active = On
diff --git a/php.ini-recommended b/php.ini-recommended
index cb4d0c1938..1bc4bc3478 100644
--- a/php.ini-recommended
+++ b/php.ini-recommended
@@ -1103,6 +1103,11 @@ mssql.secure_connection = Off
; FreeTDS defaults to 4096
;mssql.max_procs = -1
+; Specify client character set.
+; If empty or not set the client charset from freetds.comf is used
+; This is only used when compiled with FreeTDS
+;mssql.charset = "ISO-8859-1"
+
[Assertion]
; Assert(expr); active by default.
;assert.active = On