В общем случае для сохранения символов, требующих 4 байта, вам необходимо обновить набор characher и сортировку для utf8mb4
:
alter table convert to character set utf8mb4 collate utf8mb4_unicode_ci
В моей разработке enviromnt для # 2 Я предпочитаю устанавливать параметры в командной строке при запуске сервера: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
btw, обратите внимание на поведение коннектора / J с SET NAMES 'utf8mb4'
:
Не выдавайте имена наборов запросов с помощью коннектора / J, так как драйвер не обнаружит, что набор символов изменился, и будет продолжать использовать набор символов, обнаруженный во время начальной настройки соединения.
blockquote>И не следует устанавливать параметр
characterEncoding
в URL-адрес соединения, поскольку он переопределит настроенную серверную кодировку:Чтобы переопределить автоматически обнаруженную кодировку на стороне клиента, используйте свойство characterEncoding в URL-адресе, используемом для подключения к серверу.
Используйте $ PSVersionTable.PSVersion
, чтобы определить версию движка. Если переменная не существует, можно с уверенностью предположить, что это движок версии 1.0
.
Обратите внимание, что $ Host.Version
и (Get-Host) .Version
не являются надежными - они отражают
только версия хоста, а не движок. PowerGUI,
PowerShellPLUS и т. Д. - все приложения для хостинга, и
они установят версию хоста, отражающую их продукт
версия - что совершенно верно, но не то, что вы ищете.
PS C:\> $PSVersionTable.PSVersion
Major Minor Build Revision
----- ----- ----- --------
4 0 -1 -1
Чтобы проверить, установлен ли PowerShell, используйте:
HKLM\Software\Microsoft\PowerShell\1 Install ( = 1 )
Чтобы проверить, установлен ли RC2 или RTM, используйте:
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-00301) -- For RC2
HKLM\Software\Microsoft\PowerShell\1 PID (=89393-100-0001260-04309) -- For RTM
Источник: этот веб-сайт .
Вы можете посмотреть встроенную переменную $ psversiontable
. Если его нет, у вас V1. Если он существует, он предоставит вам всю необходимую информацию.
1 > $psversiontable
Name Value
---- -----
CLRVersion 2.0.50727.4927
BuildVersion 6.1.7600.16385
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1
Чтобы определить, установлен ли PowerShell, вы можете проверить реестр на наличие
HKEY_LOCAL_MACHINE\Software\Microsoft\PowerShell\1\Install
и
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3
и, если он существует, установить ли значение 1 (для установленного), как подробно описано в сообщении блога Проверьте, установлена ли PowerShell и версия .
Чтобы определить версию установленной PowerShell, вы можете проверить разделы реестра
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\1\PowerShellEngine\PowerShellVersion
и
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\PowerShell\3\PowerShellEngine\PowerShellVersion
Чтобы определить версию PowerShell который устанавливается из сценария .ps1, вы можете использовать следующий однострочный файл, как подробно описано на PowerShell.com в Какой версии PowerShell я использую .
$isV2 = test-path variable:\psversiontable
На том же сайте также есть функция для возврата версия:
function Get-PSVersion {
if (test-path variable:psversiontable) {$psversiontable.psversion} else {[version]"1.0.0.0"}
}
Я бы использовал Get-Host или $ PSversionTable . Как указывает Энди Шнайдер, $ PSversionTable
не работает в версии 1; Он был введен в версии 2.
get-host
Name : ConsoleHost
Version : 2.0
InstanceId : d730016e-2875-4b57-9cd6-d32c8b71e18a
UI : System.Management.Automation.Internal.Host.InternalHostUserInterface
CurrentCulture : en-GB
CurrentUICulture : en-US
PrivateData : Microsoft.PowerShell.ConsoleHost+ConsoleColorProxy
IsRunspacePushed : False
Runspace : System.Management.Automation.Runspaces.LocalRunspace
$PSVersionTable
Name Value
---- -----
CLRVersion 2.0.50727.4200
BuildVersion 6.0.6002.18111
PSVersion 2.0
WSManStackVersion 2.0
PSCompatibleVersions {1.0, 2.0}
SerializationVersion 1.1.0.1
PSRemotingProtocolVersion 2.1