当前位置: 首页 > 知识库问答 >
问题:

由于TYPO3中没有“set NAMES utf8;”,国际字符损坏

陈松
2023-03-14

我有一些问题在一个TYPO3波兰的网站与字符编码。配置中未设置setdbinit=set NAMES utf8;参数。一切正常(前端和后端),但从数据库导出。当我通过PhpMyAdmin搜索数据库或尝试用数据导出数据库时,所有国际字符都已损坏。

官方页面http://wiki.typo3.org/utf-8_support#set_names_utf8.3b表示:

无集名UTF8;您的TYPO3 UTF-8设置可能会起作用,但很可能在转换为UTF-8后输入的数据库内容将每个国际字符存储为两个单独的、乱七八糟的latin1字符。

如果您使用phpMyAdmin检查数据库,发现新内容中的元音显示为两个乱码,那么情况就是这样。如果这种情况发生在你身上,你就不能再仅仅添加上面的语句了。您对新内容的输出将被中断。相反,您必须首先更正新添加的特殊字符。这是最容易做到的,只需删除内容,设置选项,如上所述,并重新输入它。

有没有其他方法可以修复被破坏的角色呢?现在有很多内容要编辑...我几乎尝试了导出编码和转换为另一种编码的每一种组合,但到目前为止我都失败了。

共有1个答案

桓信鸥
2023-03-14

您可以尝试mysqldump从ISO-8859-1转换为UTF-8:

mysqldump --user=username --password=password --default-character-set=latin1 --skip-set-charset dbname > dump.sql
chgrep latin1 utf8 dump.sql (or when you prefer  sed -i "" 's/latin1/utf8/g' dump.sql) 
mysql --user=username --password=password --execute="DROP DATABASE dbname; CREATE DATABASE dbname CHARACTER SET utf8 COLLATE utf8_general_ci;"
mysql --user=username --password=password --default-character-set=utf8 dbname < dump.sql
 类似资料:
  • 下面是我用于尝试Active Directory身份验证的Kerberos JAAS客户端示例(基于此Spring源代码http://goo.gl/qRFNKY). 当名称和密码仅包含英文字符时,我可以对用户进行身份验证。 当任一字段包含国际字符时,它将失败。 如何将这段代码国际化? 下面是控制台输出(失败时)

  • 🕒 岗位/笔试时间 Java 2.29 🤔 笔试感受 应该是kpi,没问什么八股,20分钟,第一次面试不记得录音了😔 👥 面试题目 1.自我介绍 2.前端的请求如何发送到controller层 3.mybatis相关文件有哪些(不会) 4.什么是事物以及SpringBoot中如何使用 5.在controller层调用service层方法有什么影响(没明白面试官的意思) 6.写一条sql删除

  • 我找不到一种方法来国际化占位符中的文本,就像我对常规文本所做的那样。我想把我的国际化放在: 输入类型=“Text”class=“Form-Control”name=“s”placeholder=“CtrlPanel.Search.placeholder” CtrlPanel.Search.PlaceHolder=搜索爱好 现在,在我的JSP中,我包含了标记 我的配置工作正常: 因为这不起作用。

  • 问题内容: 即使将MySQL DB,表和字段的排序规则设置为utf8_general_ci,也经常发生将 é 等字符转换为 é的情况 。页面的 Content-Type中 的编码也设置为UTF8。 我知道utf8_encode / decode,但是我不确定在哪里以及如何使用它。 我已经阅读了“ 绝对是每个软件开发人员的绝对最低限度,肯定必须了解Unicode和字符集(无借口!) ”一文,但是我

  • 主要内容:转换在java中,文本是以Unicode格式内部存储的。 如果输入/输出格式不同,则需要转换。 转换 以下示例将展示将Unicode字符串转换为UTF8字节,以及将UTF8字节转为Unicode字节转换。 文件:IOTester.java - 执行上面示例代码,得到以下结果 -

  • 我是不是忽略了什么?任何帮助,提示或其他资源将非常感谢。我搜索了无数的谷歌列表,但无法解决这个问题。