相关疑难解决方法(0)

UTF-8一路走来

我正在设置一个新服务器,并希望在我的Web应用程序中完全支持UTF-8.我过去曾在现有的服务器上尝试过此操作,但最终似乎不得不回归ISO-8859-1.

我在哪里需要设置编码/字符集?我知道我需要配置Apache,MySQL和PHP来执行此操作 - 是否有一些我可以遵循的标准清单,或者可能是在出现不匹配的地方进行故障排除?

这适用于运行MySQL 5,PHP,5和Apache 2的新Linux服务器.

php mysql linux apache utf-8

1146
推荐指数
13
解决办法
15万
查看次数

utf8_general_ci和utf8_unicode_ci之间有什么区别?

在utf8_general_ci和之间utf8_unicode_ci,性能方面有什么不同吗?

mysql unicode collation utf-8 character-set

998
推荐指数
7
解决办法
38万
查看次数

如何将整个MySQL数据库characterset和collat​​ion转换为UTF-8?

如何将整个MySQL数据库字符集转换为UTF-8并将整理转换为UTF-8?

mysql character-encoding

442
推荐指数
8
解决办法
44万
查看次数

在my.cnf中将MySQL默认字符集更改为UTF-8?

目前我们在PHP中使用以下命令在我们的应用程序中将字符集设置为UTF-8.

由于这有点开销,我们想将其设置为MySQL中的默认设置.我们可以在/etc/my.cnf或其他地方这样做吗?

SET NAMES 'utf8'
SET CHARACTER SET utf8
Run Code Online (Sandbox Code Playgroud)

我在/etc/my.cnf中找了一个默认的字符集,但是没有关于字符集的内容.

此时,我执行以下操作将MySQL字符集和校对变量设置为UTF-8:

skip-character-set-client-handshake
character_set_client=utf8
character_set_server=utf8
Run Code Online (Sandbox Code Playgroud)

这是处理这个问题的正确方法吗?

mysql character-encoding

328
推荐指数
12
解决办法
45万
查看次数

UTF-8:一般?滨?Unicode的?

我试图找出我应该用于各种类型数据的排序规则.我将存储的100%内容是用户提交的.

我的理解是我应该使用UTF-8通用CI(Case-Insensitive)而不是UTF-8 Binary.但是,我无法找到UTF-8 General CI和UTF-8 Unicode CI之间的区别.

  1. 我应该将用户提交的内容存储在UTF-8 General或UTF-8 Unicode CI列中吗?
  2. UTF-8二进制适用于哪种类型的数据?

mysql collation utf-8

271
推荐指数
5
解决办法
16万
查看次数

UTF-8字符有问题; 我看到的不是我存储的东西

我试图使用UTF-8并遇到麻烦.

我尝试了很多东西; 这是我得到的结果:

  • ????而不是亚洲人物.即使是欧洲文本,我也得到Se?or了Señor.
  • 奇怪的胡言乱语(Mojibake?)如Señor或新浪新闻为????.
  • 黑色钻石,如Se or.
  • 最后,我陷入了数据丢失或至少被截断的情况:Sefor Señor.
  • 即使我看到正确的文字,它也没有正确排序.

我究竟做错了什么?我该如何修复代码?我可以恢复数据,如果是,如何恢复?

mysql unicode utf-8 character-encoding mariadb

66
推荐指数
3
解决办法
3万
查看次数

使用PHP和MySQL存储和显示unicode字符串(हिन्दी)

我必须将hindi文本存储在MySQL数据库中,使用PHP脚本获取它并将其显示在网页上.我做了以下事情:

我创建了一个数据库并将其编码设置为UTF-8,并将其排序为utf8_bin.我在表中添加了一个varchar字段,并将其设置为接受charset属性中的UTF-8文本.

然后我开始向它添加数据.在这里,我不得不从现有网站复制数据.印地文文本如下:सूर्योदय:05:30

我直接将此文本复制到我的数据库中,并使用PHP代码echo(utf8_encode($string))显示数据.这样浏览器显示"??????".

但是,当我通过浏览器中的"查看源"插入UTF等效文本时,सूर्योदय会转换为सूर्योदय.

如果我进入并存储सूर्योदय在数据库中,它将完美转换.

所以我想知道的是我如何直接将सूर्योदय存储到我的数据库中并获取它并使用PHP在我的网页中显示它.

此外,任何人都可以帮助我理解是否有一个脚本,当我输入सूर्योदय时,给我सूर्योदय?

找到解决方案

我写了以下示例脚本,它对我有用.希望它也可以帮助其他人

<html>
  <head>
    <title>Hindi</title></head>
  <body>
    <?php
      include("connection.php"); //simple connection setting
      $result = mysql_query("SET NAMES utf8"); //the main trick
      $cmd = "select * from hindi";
      $result = mysql_query($cmd);
      while ($myrow = mysql_fetch_row($result))
      {
          echo ($myrow[0]);
      }
    ?>
  </body>
</html>
Run Code Online (Sandbox Code Playgroud)

我的数据库存储hindi utf字符串的转储是

CREATE TABLE `hindi` (
  `data` varchar(1000) character set utf8 collate utf8_bin default NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

INSERT INTO …
Run Code Online (Sandbox Code Playgroud)

php mysql unicode utf-8 internationalization

47
推荐指数
3
解决办法
11万
查看次数

"utf8_unicode_ci"和"utf8_unicode_520_ci"之间的区别是什么?

我最近升级了WAMPServer,现在在phpMyAdmin中,我看到了两个排序规则utf8_unicode_ci和utf8_unicode_520_ci.我在土耳其应用程序中使用"utf8_unicode_ci",但我想知道新的*_520排序规则有什么不同?

mysql collation wampserver utf-8

19
推荐指数
2
解决办法
1万
查看次数

学说2:从MySQL表中获取奇怪的字符

我试图显示这样的文字:

1ºA
Run Code Online (Sandbox Code Playgroud)

存储在MySQL表('级别')中.

在使用以下代码查询表'level'之后:

/**
 * @Route("/list-level", name="list_level")
 */
public function listAction(Request $request)
{
    $em = $this->getDoctrine()->getEntityManager();

    $levels = $em->getRepository('AppBundle:Level')->findAll();
    var_dump($levels[0]->getName());
    die("fasf");
Run Code Online (Sandbox Code Playgroud)

这个var_dump()回报:

在此输入图像描述

我使用Symfony,因此与数据库连接相关的信息缓存在文件中var/cache/prod/appProdProjectContainer.所以我打开它来检查charset参数的值,我发现了这个:

protected function getDoctrine_Dbal_DefaultConnectionService()
{
    $a = new \Symfony\Bridge\Doctrine\ContainerAwareEventManager($this);
    $a->addEventListener(array(0 => 'loadClassMetadata'), ${($_ = isset($this->services['doctrine.orm.default_listeners.attach_entity_listeners']) ? $this->services['doctrine.orm.default_listeners.attach_entity_listeners'] : $this->get('doctrine.orm.default_listeners.attach_entity_listeners')) && false ?: '_'});

    return $this->services['doctrine.dbal.default_connection'] = ${($_ = isset($this->services['doctrine.dbal.connection_factory']) ? $this->services['doctrine.dbal.connection_factory'] : $this->get('doctrine.dbal.connection_factory')) && false ?: '_'}->createConnection(array('driver' => 'pdo_mysql', 'host' => 'localhost', 'port' => NULL, 'dbname' => 'my_javiergarpe1979', 'user' => 'javiergarpe1979', …
Run Code Online (Sandbox Code Playgroud)

mysql pdo doctrine

6
推荐指数
1
解决办法
185
查看次数

在Word中将Word文档转换为可用的HTML

我有一组Word文档,我想使用我编写的PHP工具发布.我将Word文档复制并粘贴到文本框中,然后使用PHP程序将它们保存到MySQL中.我遇到的问题来自Word文档的所有非标准字符,如引号和省略号("...").我现在所做的是手动搜索并用纯文本或HTML实体替换这些东西(以及外部符号,如e-acute)(é等等)我是否可以调用PHP中的函数Word文档的输出,并将应该是实体的所有内容转换为实体,以及在Firefox中无法正确显示的其他符号转换为显示的符号.

谢谢!

php ms-word

5
推荐指数
2
解决办法
6365
查看次数

关于utf8_turkish_ci整理的MySql LIKE运算符有什么问题?

我有一张如下表:

wordId     |   word      
---------------------------------
1          |   axxe
2          |   test word
3          |   another test word
Run Code Online (Sandbox Code Playgroud)

我正在尝试运行下面的查询来查找以字母"ax"开头的记录.

SELECT * FROM `words` WHERE word LIKE 'ax%'
Run Code Online (Sandbox Code Playgroud)

MySQL找不到任何东西.

但是,如果我尝试下面的一个查询,我可以在结果上看到正确的记录(单词"axxe").

SELECT * FROM `words` WHERE word='axxe'

SELECT * FROM `words` WHERE word LIKE '%ax%'

SELECT * FROM `words` WHERE word LIKE 'a%'
Run Code Online (Sandbox Code Playgroud)

为什么MySQL不能为第一个查询找到正确的值?我试图在命令行和phpMyAdmin上运行它,但结果是一样的.

这是SHOW CREATE TABLE输出:

CREATE TABLE `words` (
 `wordId` int(11) NOT NULL auto_increment,
 `word` text collate utf8_turkish_ci NOT NULL
 PRIMARY KEY  (`word`)
) ENGINE=MyISAM AUTO_INCREMENT=2853 DEFAULT CHARSET=utf8 COLLATE=utf8_turkish_ci
Run Code Online (Sandbox Code Playgroud)

mysql sql

5
推荐指数
1
解决办法
239
查看次数

为什么扩展的ascii字符(â,é等)被<?>字符替换?

为什么扩展的ascii字符(â,é等)被<?>字符替换?

我附加了一张图片...但是我使用PHP从MySQL中提取数据,其中一些位置有扩展字符...我使用的是字体Arial.

你可以在这里看到屏幕截图:http://img269.imageshack.us/i/funnychar.png/

在建议之后仍然发生,这是我做的:

我的firefox(view-> encoding)在添加行后设置为UTF-8,但是,选项标签内的文本仍显示有趣的字符而不是实际的重音字符.我现在应该寻找什么?

更新: 我在PHP程序中有以下内容给我那些<?>字符...

ini_set( 'default_charset', 'UTF-8' );
Run Code Online (Sandbox Code Playgroud)

在我的zend db对象创建之后,我正在设置以下查询:

$db->query("SET NAMES utf8;");
Run Code Online (Sandbox Code Playgroud)

我将所有表格更改为UTF-8并重新插入所有数据(浪费时间),因为它从未帮助过.之前是latin1.

STATUS也在报告:

Connection:             Localhost via UNIX socket
Server characterset:    latin1
Db     characterset:    latin1
Client characterset:    utf8
Conn.  characterset:    utf8
UNIX socket:            /var/run/mysqld/mysqld.sock
Uptime:                 4 days 20 hours 59 min 41 sec
Run Code Online (Sandbox Code Playgroud)

看看页面的来源,我看到<option value ="Br l Lake">Br l Lake

OK- NEW UPDATE- 我将PHP和HTML中的所有内容更改为:

和

header('Content-Type:text/html; charset = latin1');

现在它的工作原理是什么?如何将其全部转换为UTF-8?

html php character-encoding

3
推荐指数
1
解决办法
1万
查看次数