#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.