[TxMt] mysql bundle, password issues, utf8 encoding
Kim Hunter
bigkm at optusnet.com.au
Wed Jul 18 09:09:50 UTC 2007
Thanks Chris that patch Fixed my problems
Kim
Chris Adams wrote:
>
> On Jul 17, 2007, at 1:20 AM, Allan Odgaard wrote:
>> As for not showing the non-UTF-8 characters from your tables
>> correctly, I am afraid this falls under the “we assume all text is
>> UTF-8”-policy [1]. Did this work for you with the previous database
>> browser?
>>
>> I believe some databases have the notion of an encoding, but I also
>> believe it is wrong most of the time, and encoding could be a
>> per-table thing, even per row -- so I doubt this will be addressed,
>> sorry.
>
> I believe there's a simple fix for this problem. MySQL has a number of
> places where you set the character set - the server, database, table and
> individual columns can all be set individually - but there's another
> less-publicized issue: the MySQL client library defaults to latin1 for
> communication, which mangles your otherwise clean UTF-8 path. If you run
> "SHOW VARIABLES LIKE '%character%'" it'll show something like this:
> +--------------------------+------------------------------------------------------------+
>
> | Variable_name |
> Value |
> +--------------------------+------------------------------------------------------------+
>
> | character_set_client |
> latin1 |
> | character_set_connection |
> latin1 |
> | character_set_database |
> utf8 |
> | character_set_filesystem |
> binary |
> | character_set_results |
> latin1 |
> | character_set_server |
> utf8 |
> | character_set_system |
> utf8 |
> | character_sets_dir |
> /usr/local/mysql-5.0.37-osx10.4-i686/share/mysql/charsets/ |
> +--------------------------+------------------------------------------------------------+
>
>
> The solution for this is for the database client library to issue a "SET
> NAMES utf8" command after connecting:
>
> mysql> SET NAMES utf8;
> Query OK, 0 rows affected (0.00 sec)
> mysql> SHOW VARIABLES LIKE 'character_set%';
> +--------------------------+------------------------------------------------------------+
>
> | Variable_name |
> Value |
> +--------------------------+------------------------------------------------------------+
>
> | character_set_client |
> utf8 |
> | character_set_connection |
> utf8 |
> | character_set_database |
> utf8 |
> | character_set_filesystem |
> binary |
> | character_set_results |
> utf8 |
> | character_set_server |
> utf8 |
> | character_set_system |
> utf8 |
> | character_sets_dir |
> /usr/local/mysql-5.0.37-osx10.4-i686/share/mysql/charsets/ |
> +--------------------------+------------------------------------------------------------+
>
> 8 rows in set (0.00 sec)
>
> This diff should take care of this - I'm not familiar enough with the
> Ruby libraries to know if there's a better place to do this but it's
> obviously a trivial patch:
>
> Index: Support/lib/connectors/mysql.rb
> ===================================================================
> --- Support/lib/connectors/mysql.rb (revision 7747)
> +++ Support/lib/connectors/mysql.rb (working copy)
> @@ -98,6 +98,7 @@
> if args[0] != :INIT then
> real_connect(*args)
> end
> + query('SET NAMES utf8;')
> end
>
> def real_connect(host=nil, user=nil, passwd=nil, db=nil, port=nil,
> socket=nil, flag=nil)
>
>
> Chris
>
>
> ------------------------------------------------------------------------
>
>
> ______________________________________________________________________
> For new threads USE THIS: textmate at lists.macromates.com
> (threading gets destroyed and the universe will collapse if you don't)
> http://lists.macromates.com/mailman/listinfo/textmate
More information about the textmate
mailing list