【发布时间】:2017-02-23 11:32:37
【问题描述】:
我正在使用 Ubuntu 并使用 DBeaver 进行数据库访问。我正在尝试将拉丁字符插入数据库(MSSQL)并引发错误。但是如果我用DBeaver 插入相同的特殊字符,它不会抛出任何错误并且它正在工作。我已经看到this 的问题。但我没有任何想法。
它抛出以下错误:
DBD::ODBC::st execute failed: [unixODBC][FreeTDS][SQL Server]Error converting characters into server's character set. Some character(s) could not be converted (SQL-HY000) at expert.fi_review.pl line 243.
db 中的数据是J�rjest�myyr�。但实际数据是Järjestömyyrä。
示例代码:
my ($dsn,$dbh);
&DB_Connect;
$insert_query = "INSERT INTO table_name (name) values(N'$name')";
my $sth = $dbh->prepare($insert_query);
$sth->execute() or $DB_Error=$DBI::errstr;
sub DB_Connect
{
$dsn = "dbi:ODBC:driver={SQL Server};Server=$Server_name,$port;database=$Database_name;driver=FreeTDS;tds_version=8.0;";
reconnect: $dbh = DBI->connect($dsn, $db_user_id, $db_pwd ,{AutoCommit => 1}) or goto reconnect;
$dbh-> {'LongTruncOk'} = 1;
$dbh-> {'LongReadLen'} = 90000;
}
【问题讨论】:
-
你的sql表字段是nvarchar吗?如果没有,请尝试。
-
你能展示你的代码吗?
-
@SeanB 是的。我的sql表只有
nvarchar类型。 -
表和/或数据库有什么字符编码?
-
变量$name的内容编码是什么?
标签: sql-server database perl odbc special-characters