Templates Templavoila在将数据库转换为UTF-8后松开了它的映射

Templates Templavoila在将数据库转换为UTF-8后松开了它的映射,templates,encoding,utf-8,mapping,typo3,Templates,Encoding,Utf 8,Mapping,Typo3,我使用的是TemplaVoila 1.5.5和TYPO3 4.5.5。我试图将TYPO3数据库从拉丁语1_瑞典语ci ISO-8859-1切换到utf8_通用语ci。因此,我编写了一个PHP脚本,将所有内容转换为二进制,然后再转换为utf8\u general\u ci。除了TemplaVoila之外,一切似乎都正常。Typo3中的所有其他设置都已经为UTF-8做好了准备,但数据库没有。打开TYP3页面时,我收到以下消息: 找不到表/行页面的数据结构集:x。请 首先选择数据结构和模板对象 如果我

我使用的是TemplaVoila 1.5.5和TYPO3 4.5.5。我试图将TYPO3数据库从拉丁语1_瑞典语ci ISO-8859-1切换到utf8_通用语ci。因此,我编写了一个PHP脚本,将所有内容转换为二进制,然后再转换为utf8\u general\u ci。除了TemplaVoila之外,一切似乎都正常。Typo3中的所有其他设置都已经为UTF-8做好了准备,但数据库没有。打开TYP3页面时,我收到以下消息:

找不到表/行页面的数据结构集:x。请 首先选择数据结构和模板对象

如果我查看模板映射,我会得到下一条消息,即没有可用的映射。在templatemapping列的表tx_templavoila_tmplobj中,映射存储为BLOB。当转换为UTF-8时,一切都消失了。因为它是二进制的,所以我不能用一种简单的方式访问和转换它

如何保持映射?我不想描绘所有新事物。我能做什么

有两个建议的解决方案,但我想知道是否有更好的。在Michael的解决方案中,我还必须再次映射所有内容


恢复映射的fastet方法是什么?

我不能说您现在是否能够恢复已转换的数据,但如果您愿意运行转换脚本,我已经通过以下方法获得了一些成功:

取消序列化tx_templavoila_tmplobj表的templatemapping字段中的数据。 将未序列化的数据数组转换为目标编码有一个辅助方法t3lib_cs::convArray,您可以将其用于此目的。 序列化转换后的数据并将其保存回templatemapping字段。
最快的方法:只需手动将字段更改回mediumtext。所有映射都应该再次正常。我知道,它又快又脏,但对我有用…

最快的方法是重新映射。如果你有大量的模板,可能需要做一个转换工具。@Fedir:这样的转换工具会是什么样子?是否已经有类似转换工具的东西可用?就我个人而言,我没有看到好的转换器。据我所知,它应该是批处理PHP脚本,它分解映射数据,转换数据,内爆并进行dB更新;我在阅读时也有类似的想法。我使用utf8_encode而不是t3lib_cs::convArray,因为我不知道如何从t3lib\class.t3lib_cs.php中包含此函数。简单包括?现在我正在测试,但它似乎工作。。。