In [33]: import matplotlib.animation as ma
In [34]: ma.FFMpegWriter.bin_path()
Out[38]:
'ffmpeg'
In [39]: ma.FFMpegWriter.exec_key
Out[41]:
'animation.ffmpeg_path'
In [42]: ma.FFMpegWriter.isAvailable()
Out[44]:
True
In [45]: import matplotlib as mpl
In [46]: mpl.rcParams['animation.ffmpeg_path']
Out[46]:
'ffmpeg'
In [47]: mpl.rcParams['animation.ffmpeg_path'] = 'jibberish'
In [48]: ma.FFMpegWriter.isAvailable()
Out[48]:
False
In [49]: mpl.rcParams['animation.ffmpeg_path'] = 'ffmpeg'
In [50]: ma.FFMpegWriter.isAvailable()
Out[50]:
True
}); },
我有一个列名为varchar(50)的表。我可以在插入查询中轻松设置希腊字符,如下所示:
insertStudentData:function(school_id,studentData,callback){
var _pass_student=Math.random().toString(36).substr(2, 8);
var _pass_father=Math.random().toString(36).substr(2, 8);
var _pass_mother=Math.random().toString(36).substr(2, 8);
var data = [
{ tag: '_father_pass', value : _pass_father },
{ tag: '_mother_pass', value : _pass_mother },
{ tag: '_student_pass', value :_pass_student }];
enc_data.getpass(8, data, function(result){
query= 'call addStudentBulk("'+studentData[12]+'",'+studentData[15]+','+studentData[16]+',"'+studentData[1]+'","'+studentData[3]+'","'+studentData[2]+'","'+studentData[7]+'","' +studentData[4]+'","'+studentData[6]+'","'+studentData[13]+'","'+studentData[8]+'","'+studentData[14]+'","'+studentData[10]+'","'+studentData[11]+'","'+studentData[5]+'","'+studentData[9]+'","'+_pass_student+'","'+_pass_father+'","'+_pass_mother+'","'+result[2]['value']+'","'+result[0]['value']+'","'+result[1]['value']+'",'+school_id+')';
dataAccess.getObject(query,function(status){
if(status!='err')
{
console.log(studentData[12]+' '+studentData[1]+' done');
callback({err:false,data:null});
}
else
{
console.log(studentData[12]+' '+studentData[1]+ ' err');
callback({err:true,data:studentData[12]+' '+studentData[1]+ ' err'});
}
});
但是当我通过参数将这个希腊字符串传递给mysql存储过程时,它给了我这个错误:
insert into student set name='ΧΡΙΣΤΟΣ ΑΒΕΡΚΙΟΥ';
这是我的程序主体:
call new_procedure('ΧΡΙΣΤΟΣ ΑΒΕΡΚΙΟΥ');
Error Code: 1366. Incorrect string value: '\xCE\xA7\xCE\xA1\xCE\x99...' for
column 'name_'
我该怎么做?请帮我。 修改
我已经将表格设置为utf8; 我从NodeJs中的excel表导入数据。 excel表包含希腊字符,我想存储它们。这是表结构的图片
答案 0 :(得分:1)
正如错误消息所示,您的字符串被正确编码为UTF-8但MySQL服务器没有预料到它。如果你真的想要使用UTF-8,我们还是完全清楚,但我们是在2016年,所以我们假设你这样做。
首先,您需要检查表结构。如果您没有保留原始的CREATE TABLE
语句(或者它从未存在过因为您使用GUI工具在开发和生产中创建表),您可以使用此查询获取它:
show create table student
您的表应明确使用UTF-8。否则,您将依赖于创建数据库的人使用的任何默认值。您发布了一些GUI工具的图片,该工具表明student_name
列使用UTF-8,但可能与表的其余部分具有不同的编码:如果为true,则表示等待发生问题的信号(但不会是你当前问题的根源)。无论如何,不要猜测,只要亲眼看看就可以了。
其次,我已经搜索了Node.js的mysql库并选择了第一个结果(假设你做了同样的事情)并找到了mysqljs/mysql。那个似乎不支持除UTF-8以外的任何东西,因此它甚至没有"编码"参数,但是,再一次,你应该自己验证它(毕竟,这甚至可能不是你的库)。
如果您不想使用UTF-8,请忽略此答案:它不适用于您的问题。
答案 1 :(得分:0)
在不知道所有细节的情况下,我会说该表不是为希腊字符编码的。 UTF-8应该能够处理希腊字符。
ALTER TABLE `student` CONVERT TO CHARACTER SET 'utf8'
其次,您需要确保要导入的文本以UTF-8编码。如果您是从网页上写的,那么您可以在元标记中定义字符集。
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
如果您要从CSV导入,可以将数据复制到notePad ++中,它应该能够将文本编码为UTF-8。