]> granicus.if.org Git - php/commitdiff
Fix #35730 Use correct character encoding with FreeTDS
authorFrank M. Kromann <fmk@php.net>
Wed, 21 Dec 2005 22:43:06 +0000 (22:43 +0000)
committerFrank M. Kromann <fmk@php.net>
Wed, 21 Dec 2005 22:43:06 +0000 (22:43 +0000)
NEWS
ext/mssql/php_mssql.c
ext/mssql/php_mssql.h
php.ini-dist
php.ini-recommended

diff --git a/NEWS b/NEWS
index a09168be92268986bbdf938315180f2f82be7250..46df6086ce6a814af3f8ec1c0b151655e0ed5739 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -34,6 +34,7 @@ PHP                                                                        NEWS
   connecting to 5.x server. (Andrey)
 - Fixed bug #35760 (sybase_ct doesn't compile on Solaris using old gcc). (Tony)
 - Fixed bug #35740 (memory leak when including a directory). (Tony)
+- Fixed bug #35730 (Use correct character encoding, and allow setting it) (Frank)
 - Fixed bug #35723 (xmlrpc_introspection.c fails compile per C99 std). (Jani)
 - Fixed bug #35720 (A final constructor can be overwritten). (Marcus)
 - Fixed bug #35713 (getopt() returns array with numeric strings when passed 
index 7a726081895538af7aa4a5b0df1bab239a57f1bc..7b7a81844b62f21b8b9309a179b2bc440f7af0c9 100644 (file)
@@ -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));
@@ -1009,7 +1014,7 @@ static void _mssql_get_sp_result(mssql_link *mssql_ptr, mssql_statement *stateme
 
        /* Now to fetch RETVAL and OUTPUT values*/
        num_rets = dbnumrets(mssql_ptr->link);
-       
+
        if (num_rets!=0) {
                for (i = 1; i <= num_rets; i++) {
                        parameter = (char*)dbretname(mssql_ptr->link, i);
index 17e5d4d10e5ead89944cbbc1754f6d93782b1917..9c668ef368bca321cc6216219ea2f6bb4e2400c5 100644 (file)
@@ -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;
index 55613d7a57c331540a8f18bf39220ec28b7dfaac..e1405ada52b5394c38e7a4b95d50d8b1b73627b5 100644 (file)
@@ -1035,6 +1035,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
index 0f8078e951acabe03a10c8546129454cbabc0da3..65625975f584720d8476ff4e3c8da24e9ff0bd48 100644 (file)
@@ -1093,6 +1093,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