8000 The Encoding parameter of Import-Ini and Export-Ini behaves inconsistently. · Issue #146 · lipkau/PSIni · GitHub
[go: up one dir, main page]

Skip to content

The Encoding parameter of Import-Ini and Export-Ini behaves inconsistently. #146

Open

Description

@Mapaler

In a Chinese environment, the default UTF-8 encoding causes all ANSI (GBK) encoded Chinese characters to be read incorrectly. Therefore, my Import-Ini needs to add the -Encoding ([System.Text.Encoding]::Default) parameter.
However, when I need to output, I found that the Export-Ini -Encoding ([System.Text.Encoding]::Unicode) parameter actually causes an error and needs to be changed to -Encoding unicode.

PSIni Version: 4.0.1

 Mapaler  $PSVersionTable

Name                           Value
----                           -----
PSVersion                      5.1.19041.7058
PSEdition                      Desktop
PSCompatibleVersions           {1.0, 2.0, 3.0, 4.0...}
BuildVersion                   10.0.19041.7058
CLRVersion                     4.0.30319.42000
WSManStackVersion              3.0
PSRemotingProtocolVersion      2.3
SerializationVersion           1.1.0.1

Import-Ini

❌ -Encoding ansi
 Mapaler  Import-Ini "C:\ProgramFree\TotalCMD64\User\User.ini" -Encoding ansi
Import-Ini : 无法处理对参数“Encoding”的参数转换。无法将“System.String”类型的“ansi”值转换为“System.Text.Encoding
”类型。
所在位置 行:1 字符: 64
+ Import-Ini "C:\ProgramFree\TotalCMD64\User\User.ini" -Encoding ansi
+                                                                ~~~~
    + CategoryInfo          : InvalidData: (:) [Import-Ini],ParameterBindingArgumentTransformationException
    + FullyQualifiedErrorId : ParameterArgumentTransformationError,Import-Ini

✅ -Encoding ([System.Text.Encoding]::Default)
 Mapaler  Import-Ini "C:\ProgramFree\TotalCMD64\User\User.ini" -Encoding ([System.Text.Encoding]::Default)

Name                           Value
----                           -----
Associations                   {Filter1, Filter1_open, Filter1.icon, Filter2...}
user                           {menu1, cmd1, param1, menu2...}
DirMenu                        {menu1, cmd1, menu2, cmd2...}

Export-Ini

✅ -Encoding unicode
 Mapaler  Export-Ini -InputObject $sourceData -Path "C:\ProgramFree\TotalCMD64\User\User.new.ini" -Encoding unicode   

❌ -Encoding ([System.Text.Encoding]::Unicode)
 Mapaler  Export-Ini -InputObject $sourceData -Path "C:\ProgramFree\TotalCMD64\User\User.new.ini" -Encoding ([System.Text.Encoding]::Unicode)
Export-Ini : Cannot validate argument on parameter 'Encoding'. The argument "System.Text.UnicodeEncoding" does not belo
ng to the set "unknown, string, unicode, bigendianunicode, utf8, utf7, utf32, ascii, default, oem" specified by the Val
idateSet attribute. Supply an argument that is in the set and then try the command again.
所在位置 行:1 字符: 1
+ Export-Ini -InputObject $sourceData -Path "C:\ProgramFree\TotalCMD64\ ...
+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
    + CategoryInfo          : InvalidType: (System.Text.UnicodeEncoding:String) [Export-Ini], ArgumentException
    + FullyQualifiedErrorId : InvalidEncoding,Export-Ini

Activity

  1. changed the title [-]Import-Ini 和 Export-Ini 的 Encoding 参数行为不一致。[/-] [+]The Encoding parameter of Import-Ini and Export-Ini behaves inconsistently.[/+] on Mar 17, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions

      0