- --- a/src/connection.cpp
- +++ b/src/connection.cpp
- @@ -18,6 +18,14 @@
- #include "cnxninfo.h"
- #include "sqlwchar.h"
-
- +#ifdef WORDS_BIGENDIAN
- +# define OPTENC_UTF16NE OPTENC_UTF16BE
- +# define ENCSTR_UTF16NE "utf-16be"
- +#else
- +# define OPTENC_UTF16NE OPTENC_UTF16LE
- +# define ENCSTR_UTF16NE "utf-16le"
- +#endif
- +
- #if PY_MAJOR_VERSION < 3
- static bool IsStringType(PyObject* t) { return (void*)t == (void*)&PyString_Type; }
- static bool IsUnicodeType(PyObject* t) { return (void*)t == (void*)&PyUnicode_Type; }
- @@ -90,7 +98,7 @@ static bool Connect(PyObject* pConnectSt
- // indication that we can handle Unicode. We are going to use the same unicode ending
- // as we do for binding parameters.
-
- - SQLWChar wchar(pConnectString, SQL_C_WCHAR, encoding, "utf-16le");
- + SQLWChar wchar(pConnectString, SQL_C_WCHAR, encoding, ENCSTR_UTF16NE);
- if (!wchar)
- return false;
-
- @@ -216,24 +224,24 @@ PyObject* Connection_New(PyObject* pConn
- // single-byte text we don't actually know what the encoding is. For example, with SQL
- // Server the encoding is based on the database's collation. We ask the driver / DB to
- // convert to SQL_C_WCHAR and use the ODBC default of UTF-16LE.
- - cnxn->sqlchar_enc.optenc = OPTENC_UTF16LE;
- - cnxn->sqlchar_enc.name = _strdup("utf-16le");
- + cnxn->sqlchar_enc.optenc = OPTENC_UTF16NE;
- + cnxn->sqlchar_enc.name = _strdup(ENCSTR_UTF16NE);
- cnxn->sqlchar_enc.ctype = SQL_C_WCHAR;
-
- - cnxn->sqlwchar_enc.optenc = OPTENC_UTF16LE;
- - cnxn->sqlwchar_enc.name = _strdup("utf-16le");
- + cnxn->sqlwchar_enc.optenc = OPTENC_UTF16NE;
- + cnxn->sqlwchar_enc.name = _strdup(ENCSTR_UTF16NE);
- cnxn->sqlwchar_enc.ctype = SQL_C_WCHAR;
-
- - cnxn->metadata_enc.optenc = OPTENC_UTF16LE;
- - cnxn->metadata_enc.name = _strdup("utf-16le");
- + cnxn->metadata_enc.optenc = OPTENC_UTF16NE;
- + cnxn->metadata_enc.name = _strdup(ENCSTR_UTF16NE);
- cnxn->metadata_enc.ctype = SQL_C_WCHAR;
-
- // Note: I attempted to use UTF-8 here too since it can hold any type, but SQL Server fails
- // with a data truncation error if we send something encoded in 2 bytes to a column with 1
- // character. I don't know if this is a bug in SQL Server's driver or if I'm missing
- // something, so we'll stay with the default ODBC conversions.
- - cnxn->unicode_enc.optenc = OPTENC_UTF16LE;
- - cnxn->unicode_enc.name = _strdup("utf-16le");
- + cnxn->unicode_enc.optenc = OPTENC_UTF16NE;
- + cnxn->unicode_enc.name = _strdup(ENCSTR_UTF16NE);
- cnxn->unicode_enc.ctype = SQL_C_WCHAR;
-
- #if PY_MAJOR_VERSION < 3
|