请选择 进入手机版 | 继续访问电脑版

REDCap club

查看: 576|回复: 4

REDCap11.*版本数据字典和xml导入含中文数据异常的排查与处理

[复制链接]

21

主题

54

帖子

398

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
398
发表于 2021-8-24 21:33:48 | 显示全部楼层 |阅读模式
REDCap升级到11.2以后,PHP版本就要求至少php7.2.5以上,我们在使用过程中,发现升级后,中文windows服务器上,进行使用数据字典建库、XML建项目、导入数据等环节里,如果文件内容中有中文文字,就可能导致出错,出错包括:“record_id”缺失,csv文件错行等。。。
经过排查,找到问题所在:php7的fgetcsv函数对中文支持有bug,(既往php5.5可正常运行);但php 8可以正常支持,因此只要将php升级到8.0以上就OK啦!

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复

使用道具 举报

21

主题

54

帖子

398

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
398
 楼主| 发表于 2021-8-24 22:50:03 | 显示全部楼层
测试是否支持中文csv文件导入,在系统里上传一个含有中文内容的csv文件(chinse.csv),同目录新建一个php文件如下,在浏览器中访问这个文件,可以查看是否能够正常输出csv的内容,主要看中文后面是否有分隔符“,”,若有,就是异常的表现。
  1. <? php
  2. $handle = fopen('chinese.csv','rb');
  3. while(($row=fgetcsv($handle,0,","))!==false)
  4. {
  5.     print_r($row);
  6. }
  7. ?>
复制代码
回复

使用道具 举报

1

主题

5

帖子

43

积分

新手上路

Rank: 1

积分
43
发表于 2021-9-2 15:02:03 | 显示全部楼层
感谢,前面遇到过导入数据后中文乱码显示 (不知道是不是同一个原因)
在官方论坛上得到一个解决办法是用notepad+去更改CSV的格式,说是excel保存后CSV容易把识别符删去,然后就会出现中文乱码。
我再去升级下PHP版本试试看
回复

使用道具 举报

21

主题

54

帖子

398

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
398
 楼主| 发表于 2021-9-2 20:45:35 | 显示全部楼层
smmufan 发表于 2021-9-2 15:02
感谢,前面遇到过导入数据后中文乱码显示 (不知道是不是同一个原因)
在官方论坛上得到一个解决办法是用not ...

这和乱码还不是同一件事,这个问题中文字符是能识别的,但因为结构错误,无法导入。csv文件用编辑器打开可以看到UTF8的标识符是存在的,因此不是编码的问题。用不同版本PHP的fgetcsv测试,证明的确是PHP版本问题。乱码问题是直接可以看到乱码的内容无法导入,或数据字典可以导入,但显示的是乱码。
回复

使用道具 举报

0

主题

1

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 2021-12-2 15:23:55 | 显示全部楼层
smmufan 发表于 2021-9-2 15:02
感谢,前面遇到过导入数据后中文乱码显示 (不知道是不是同一个原因)
在官方论坛上得到一个解决办法是用not ...

乱码问题是因为下载的模板csv编码是ANSI编码的,可以用记事本打开另存为 时将编码改成UTF-8导入进去就是正常的中文
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|沪ICP备2020038279号-3|REDCap CLUB

Copyright © 2001-2013 Comsenz Inc.Template by Comsenz Inc.All Rights Reserved.

Powered by Discuz!X3.4

快速回复 返回顶部 返回列表