mkH*_*Hun 7 database sql-server perl odbc special-characters
我正在研究Ubuntu,我正在使用DBeaver数据库访问.我试图将拉丁字符插入数据库(MSSQL),它会引发错误.但是,如果我插入相同的特殊字符DBeaver,它不会抛出任何错误,它正在工作.我已经看过这个问题.但我不知道.
它抛出以下错误:
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.
Run Code Online (Sandbox Code Playgroud)
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;
}
Run Code Online (Sandbox Code Playgroud)
将 utf-8 转换为 utf-16,然后将其插入 nvarchar 列。
阅读时又回到utf-8。
或者使用 varbinary 列并在其中存储纯 utf-8 字节。在 nvarchar 列中存储 utf-8 编码的数据是错误的。