Am anxious to read your documentation. I really don't know much at all about encoding, not even the proper string at beginning of html documents. Have google search and read these somewhat unrelated conversion discussion:
http://www.oreillynet.com/onlamp/blo..._latin1_t.html
http://uclue.com/?xq=1351
http://www.mysqlperformanceblog.com/...mess-in-mysql/
and found this software (not sure of relevence):
http://www.killetsoft.de/p_cona_e.htm
Best thing I found was a nice PHP script someone made to convert their wordpress to the UTF-8 encoding. It's a straightforward script and not long. I think it would make a terrific base for anyone wanting to create a similar script to convert a Zen Cart db to UTF-8. I think I need such a script since I've put a couple day of input all the products into the database already (using latin1_swedish_ci). Can imagine it would be a necessary script for other people who've put a couple years into their store, I'm only a few weeks into learning Zen Cart.
http://projects.tacker.org/svn/small...t-encoding.php
Code:
<?php
// +----------------------------------------------------------------------+
// | Convert wordpress content encoding |
// +----------------------------------------------------------------------+
// | Copyright (C) 2005 Markus Tacker <[email protected]> |
// +----------------------------------------------------------------------+
// | This library is free software; you can redistribute it and/or |
// | modify it under the terms of the GNU Lesser General Public |
// | License as published by the Free Software Foundation; either |
// | version 2.1 of the License, or (at your option) any later version. |
// | |
// | This library is distributed in the hope that it will be useful, |
// | but WITHOUT ANY WARRANTY; without even the implied warranty of |
// | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU |
// | Lesser General Public License for more details. |
// | |
// | You should have received a copy of the GNU Lesser General Public |
// | License along with this library; if not, write to the |
// | Free Software Foundation, Inc. |
// | 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA |
// +----------------------------------------------------------------------+
/**
* Converts wordpress encodings
*
* IMPORTANT!
* Remember to dumpy your database first
*
* mysqldump --opt DB_NAME
*
* Or use phpMyAdmin:
* http://www.zerokspot.com/docs/howto.phpmyadmin.backup_and_restore/
* http://www.phpmyadmin.net/documentation/#faq6_3
*
* Do NOT run this script more then once
*
* Place this script inside the wp-content folder of your blog and
* access it via the browser, e.g. http://yoursite.com/blog/wp-content/convert-encoding.php
*
* Remember to remove it afterwards.
*
* @author Markus Tacker <[email protected]>
* @version $Id$
* @link http://versions.tacker.org/svn/wp-convert-encoding/trunk/convert-encoding.php
*/
// You have to remove the line below to make this script work
// By removing the line you accept the license agreement stated above
die('Please follow the instructions in ' . $_SERVER['PHP_SELF']);
error_reporting(E_ALL);
ini_set('display_errors', 1);
/**
* @var string Target encoding
*/
$new_encoding = 'UTF-8';
/**
* @var string New collation for the table
*/
$new_mysql_collation = 'utf8_general_ci';
/**
* @var string New character set for the table
*/
$new_mysql_encoding = 'utf8';
/**
* You would set this switch to true if you have used this script before
* and Your titles contain invalid non-ascii charactes like "für"
* Your database entries are utf-8 encoded and need to be decoded, not converted.
*
* @var bool UTF-8 decode your content instead
*/
$decode = false;
require_once '../wp-config.php';
// Connect
$DBC = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD);
mysql_select_db(DB_NAME, $DBC);
$result = mysql_query('SHOW TABLES FROM ' . DB_NAME, $DBC);
echo '<pre>';
echo 'Mode is <strong>' . (($decode) ? 'decode' : 'convert') . "</strong>\n";
echo 'New encoding is <strong>' . $new_encoding . "</strong>\n";
echo 'New encoding for mysql is <strong>' . $new_mysql_encoding . "</strong>\n";
echo 'New collation for mysql is <strong>' . $new_mysql_collation . "</strong>\n";
while ($row = mysql_fetch_row($result)) {
// Skip Non-WP tables
if (!empty($table_prefix) && substr($row[0], 0, strlen($table_prefix)) != $table_prefix ) continue;
// Convert the tables encoding
$sql = 'ALTER TABLE ' . ek($row[0]) . ' DEFAULT CHARACTER SET ' . $new_mysql_encoding . ' COLLATE ' . $new_mysql_collation;
mysql_query($sql);
// Convert the fields
$sql = 'SHOW CREATE TABLE ' . ek($row[0]);
$result2 = mysql_query($sql);
$table_sql = mysql_fetch_assoc($result2);
foreach (explode("\n", $table_sql['Create Table']) as $line) {
$line = trim($line);
if (!preg_match('/ character set ([^ ]+)/', $line, $match_cs)) continue;
$line = preg_replace('/collate [0-9a-z_]+/i', '', $line); // Remove old collate
preg_match('/^`[^`]+`/', $line, $match_field);
$sql = 'ALTER TABLE ' . ek($row[0])
. ' CHANGE ' . $match_field[0] . ' '
. str_replace($match_cs[0], ' character set ' . $new_mysql_encoding . ' COLLATE ' . $new_mysql_collation, substr($line, 0, -1));
mysql_query($sql);
}
// Convert its data
$result_data = mysql_query('SELECT * FROM ' . $row[0]);
echo $row[0] . ' ';
while ($data = mysql_fetch_assoc($result_data)) {
$sql = 'UPDATE ' . $row[0];
// Build set
$set = array();
foreach ($data as $key => $val) {
if ($decode) {
$set[] = ek($key) . '=' . ev(utf8_decode($data[$key]));
} else {
$set[] = ek($key) . '=' . ev(mb_convert_encoding($data[$key], $new_encoding));
}
}
$sql .= ' SET ' . join(', ', $set);
// Build where
$where = array();
foreach ($data as $key => $val) {
if (!preg_match('/^[0-9]+$/', $val)) continue; // Use only numbers in where
$where[] = ek($key) . '=' . ev($data[$key]);
}
if (empty($where)) continue 2; // Table has no numeric fields, skip it
$sql .= ' WHERE ' . join(' AND ', $where);
$query_result = mysql_query($sql, $DBC);
if (!$query_result) {
die( 'Query failed: ' . $sql . ' (' . mysql_error() . ')' );
}
echo '.';
flush();
}
echo "\n";
}
echo "All done.\n";
echo '<span style="color: #ff0000;">Remember to remove this script!</span>' . "\n";
echo '</pre>';
// Disconnect
mysql_close($DBC);
function ek($string)
{
global $DBC;
return "`" . mysql_real_escape_string($string, $DBC) . "`";
}
function ev($string)
{
global $DBC;
return "'" . mysql_real_escape_string($string, $DBC) . "'";
}
?>