【问题标题】:I can't remove non printable characters with PHP我无法使用 PHP 删除不可打印的字符
【发布时间】:2019-10-31 12:05:32
【问题描述】:

使用 getID3,有时标签中有特殊字符(带问号的小黑菱形),但我似乎无法删除它们

我从这里尝试了一切

PHP: How to remove all non printable characters in a string?

在数据库 (phpMyAdmin) 中,当打印出来时,它们显示为 ??在数据的开头。

问题是,我根本不希望这些字符出现在数据库中(无论它们正确显示还是显示为问号)

但是,我尝试过的代码都不会删除 PHP 中的这些特殊字符

【问题讨论】:

  • 如果您的字符显示为 ??然后你在某个地方搞砸了。
  • 好吧,getID3 每次都在读取['id3v2']['TALB'][0]['data'] 开头的这两个字符。我假设 ??是因为编码类型,但是这两个字符一开始就不应该在那里

标签: php unicode


【解决方案1】:

如果您看到这种情况,则说明您使用了错误的编码,而您没有共享该编码。所需的编码基于数据库中的字符集。

例如,在 MySQL 中,首先运行 SHOW CHARACTER SET FOR mydatabase;,然后再运行 SHOW CHARACTER SET FOR mydatabase.mytable; 以获取正确的字符集。

然后您可以设置正确的编码。

【讨论】:

  • 数据库为utf8mb4_general_ci,每个表为latin1_swedish_ci。在 getid3 信息上使用 print_r 或回显某些值时,会出现特殊字符。问题不在于它们在数据库中的显示方式,问题是我根本不希望这些字符(2 个空格)出现在数据库中。
  • @cantsay 删除任何您不想要的特殊字符是一条丑陋的道路,最好在存储之前对其进行正确编码。 stackoverflow.com/questions/910793/…
  • 尝试将表和列排序规则都设置为utf8mb4_general_ci,然后当您连接到 MySQL 数据库时,您还必须指示数据库服务器使用 UTF-8 (see this answer] 进行通信。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-03-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-03-26
  • 1970-01-01
相关资源
最近更新 更多