db->do(“set names utf8”);をいれる。
my $user = 'root'; my $passwd = ''; my $db = DBI->connect('DBI:mysql:count:localhost', $user, $passwd); my $sth = $db->prepare("INSERT INTO accounts(password, email, name, name_kana) VALUES ('password2','test@gmail.com2','横山健','よこやまけん')"); $db->do("set names utf8"); $sth->execute; $sth->finish; $db->disconnect;
mysql> select * from accounts;
+—-+———–+—————-+——————–+———————————————+
| id | password | email | name | name_kana |
+—-+———–+—————-+——————–+———————————————+
| 1 | password | test@gmail.com | 横山健 | よこやまけん |
| 2 | password | testgmail.com | 横山� | よ�や��ん |
| 3 | password2 | testgmail.com2 | 横山� | よ�や��ん |
| 4 | password2 | testgmail.com2 | 横山健 | よこやまけん |
+—-+———–+—————-+——————–+———————————————+
4 rows in set (0.00 sec)
おお、文字化けが治った。
ところで、@がインサートできんぞ。