Ucenter Home数据库转码教程(GBK转UTF8)

by liony

原创文章,转载请联系Liony_小狮

小狮最近在做UCH数据迁移的时候遇到了乱码问题,原站点使用的是GBK编码,包括数据库和页面都是GBK的,现在要求完整转换到UTF8编码。一开始总是出现乱码的情况,后经过一些摸索,乱码问题解决了,但是导入到数据库之后会出现feed无法解析的情况(如下图),看到论坛上很多人都遇到了这个问题。

经过排查发现了feed不能解析的原因。在UCH中有很多序列化数据,如feed,日志tag等等,这部分数据输出到前台显示之前程序要替换其中的占位符,由于一个字符在GBK和UTF8编码下的长度是不一样的,因此UCH在读取序列化数据之后会出现占位符长度判断错误的情况,导致替换失败,在时候就需要对这些序列化数据重新整理。

对这部分数据的整理可以通过一段程序实现(点击这里下载),如此便可以实现无错转换了,总的步骤如下:

  1. 全新安装UTF8编码格式的程序,然后将这个新程序的数据库中的所有表清空,注意不是删除表,只是清空表内数据,使用PHPMyadmin清空即可;
  2. 导出原GBK站点数据库的数据,注意仅导出数据,不导出表结构,通过PHPMyadmin导出即可;
  3. 将导出的数据导入新的UTF8站点数据库;
  4. 将整理数据的PHP文件上传至UCH根目录,然后运行即可

安装后可能可能会存在漫游应用无法读取的问题(一直loading),这时候只要将原来数据库中的uchome_config表再覆盖回新的数据库中即可。

下面是官方的说明:

每个 UCenter Home 网站对应一个自己的 sitekey,如果注册 Manyou 平台,将会得到一个 Manyou 站点 id(my_siteid) 和 Manyou 站点 key(my_sitekey)。使用 MYOP 时,就是依靠 my_siteid、my_sitekey 进行通讯的。重新安装 UCHome,将会得到一个新的 sitekey 。这时注册Manyou 平台,也将得到全新的 my_siteid、my_sitekey。因此,如果重装后想在MYOP继续使用以前的站点数据,请您恢复原先 uchome_config 表中的 sitekey、my_siteid、my_sitekey、my_status 值。