Drupal 7 开发内部培训资料, 分头诗人

我把项目分离到服务器上,不知道怎么回事,有些地方出现乱码,还有就是

赞成!
0
否决!

我把项目分离到服务器上,不知道怎么回事,有些地方出现乱码,还有就是出现这样的报错

    Notice: unserialize(): Error at offset 1909 of 2340 bytes 在 views_db_object->load_row() (行 2243 在 F:\xampp\htdocs\drupal\modules\views\includes\view.inc).
    Notice: unserialize(): Error at offset 124 of 149 bytes 在 views_db_object->load_row() (行 2243 在 F:\xampp\htdocs\drupal\modules\views\includes\view.inc).
    Notice: unserialize(): Error at offset 1915 of 2261 bytes 在 views_db_object->load_row() (行 2243 在 F:\xampp\htdocs\drupal\modules\views\includes\view.inc).
    Notice: unserialize(): Error at offset 118 of 134 bytes 在 views_db_object->load_row() (行 2243 在 F:\xampp\htdocs\drupal\modules\views\includes\view.inc).

这是首页的,还有就是 我在首页添加的views数据显示也不显示 不知道什么原因 在我自己的本机上都可以的。

6 个回答

赞成!
1
否决!

可能是编码问题,假使原来的字符串是从数据库里取出来的,而原来插入数据库时的PHP用的是ANSCII编辑,而复制出来后用unserialize()的PHP文件是UTF-8编码,编码不同,所以就出现错误了。

例子:

<?php

$arr = array('en' => 'hello', 'cn' => '您好');
$str = serialize($arr);
echo $str;

?>

 

以ANSCII方式操作结果:

a:2:{s:2:"en";s:5:"hello";s:2:"cn";s:4:"您好";}

以UTF-8的编码方式结果:

a:2:{s:2:"en";s:5:"hello";s:2:"cn";s:6:"您好";}

看到有什么不同了吧,在出现中文字符时字符长度就不一样了,也就是strlen('您好')在第一种编码中是4,而在第二种编码中是6,其中原因可以查看相关手册. 而unsrialize()要根据类似 s:6:"您好" 中的6来判断字符长度并进行反序列,但原来的是4,字符长度不符,也就是出现了offset错误

 

解决办法:  将要反序列的字符串进行一次转换

$str = preg_replace('!s:(\d+):"(.*?)";!se', '"s:".strlen("$2").":\"$2\";"', $str );

 

或者用自己自定的函数来代替unserialize

function mb_unserialize($serial_str) {
$out = preg_replace('!s:(\d+):"(.*?)";!se', "'s:'.strlen('$2').':\"$2\";'", $serial_str );
return unserialize($out);
}

 

 

赞成!
0
否决!

诗人 我是按照你在一个地方说的 把数据库拷过去 和drupal全部拷过去 出现这样的错误不知是不是需要什么前提啊

赞成!
0
否决!

现在对了 原因是sql不能批量运行 只要不批量运行 项目就是对的 不知道为什么?

赞成!
0
否决!

你在安装时候,是否有留意数据库编码?

赞成!
0
否决!

数据里有一些是乱码 我改了 两边的数据库都是我建的 编码 我选的都是一样的 不知道为什么 运行批次任务的时候还报一条数据 插入失败 并且 里面有错误 drupal里的文件 和什么都和我的机子上的一样 我用对不工具比较了的 我想应该是数据库的问题了 但是我去把数据库中的乱码改了 还是一样出现那样的问题 并且 我在首页上要显示的views的区块 不显示 也不知道为什么????????

赞成!
0
否决!

我安装数据库的时候选的utf-8 两边的数据库都是选的utf-8 但是这边的数据导入到那边的数据库中去就是有乱码 就是中文变成了乱码 诗人知道原因吗