PowerShell MySQL не удалось вставить внешние символы

#mysql #powershell #utf-8

Вопрос:

Если я выполню следующую вставку MySQL, корейский текст будет успешно вставлен в таблицу

 INSERT INTO `table` (`site`, `published`, `title`, `link`, `body`, `language`) VALUES ('something.com', '2021-09-02 02:11:01', '안녕하세요 월드입니다!', 'something.com', 'none', 'Korean');
 

но в powershell корейский текст вставляется в таблицу как ????? ?????!

 function ConnectToDatabase([string]$user, [string]$pass, [string]$MySQLHost, [string]$database) {
    #write-host "--------"
    #write-host "Connecting to database" 
    # Load MySQL .NET Connector Objects 
    [void][system.reflection.Assembly]::LoadWithPartialName("MySql.Data") 
    # Open Connection 
    $connStr = "server="   $MySQLHost   ";port=3306;uid="   $user   ";pwd="   $pass   ";database=" $database ";Pooling=FALSE" 
    try {
        $conn = New-Object MySql.Data.MySqlClient.MySqlConnection($connStr) 
        $conn.Open()
    } catch [System.Management.Automation.PSArgumentException] {
        write-host "Unable to connect to MySQL server, do you have the MySQL connector installed..?"
        write-host $_
        #Exit
    } catch {
        write-host "Unable to connect to MySQL server..."
        write-host $_.Exception.GetType().FullName
        write-host $_.Exception.Message
        #exit
    }
    #write-host "Connected to MySQL database : $MySQLHost$database"
    #write-host "--------"
    return $conn 
}
$conn = ConnectToDatabase "user" "pass" "127.0.0.1" "db"
$query='INSERT INTO `table` (`site`, `published`, `title`, `link`, `body`, `language`) VALUES ("something.com", "2021-09-02 02:11:01", "안녕하세요 월드입니다!", "something.com", "none", "Korean");'          
$Command = New-Object MySql.Data.MySqlClient.MySqlCommand $query, $conn
$null = $Command.ExecuteNonQuery()
$conn.close()
 

Комментарии:

1. Происходит ли это также, если вы прямо вставляете его? Если вы запустите его как скрипт, убедитесь, что он указан в спецификации UTF8, а не только в UTF8. PowerShell облажается и в противном случае интерпретирует его как ASCII/CP.