如何在DB中插入特殊字符?

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)

erg*_*erg 0

将 utf-8 转换为 utf-16,然后将其插入 nvarchar 列。

阅读时又回到utf-8。

或者使用 varbinary 列并在其中存储纯 utf-8 字节。在 nvarchar 列中存储 utf-8 编码的数据是错误的。