Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

-Encoding add ANSI option #19298

Merged
merged 5 commits into from
Mar 13, 2023
Merged
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 15 additions & 13 deletions src/System.Management.Automation/utils/EncodingUtils.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@
// Licensed under the MIT License.

using System.Collections.Generic;
using System.Globalization;
using System.Text;

using System.Management.Automation.Internal;
Expand All @@ -10,25 +11,26 @@ namespace System.Management.Automation
{
internal static class EncodingConversion
{
internal const string Unknown = "unknown";
internal const string String = "string";
internal const string Unicode = "unicode";
internal const string Ascii = "ascii";
internal const string BigEndianUnicode = "bigendianunicode";
internal const string BigEndianUtf32 = "bigendianutf32";
internal const string Ascii = "ascii";
internal const string Default = "default";
internal const string OEM = "oem";
internal const string Unicode = "unicode";
internal const string Utf7 = "utf7";
internal const string Utf8 = "utf8";
internal const string Utf8NoBom = "utf8NoBOM";
internal const string Utf8Bom = "utf8BOM";
internal const string Utf7 = "utf7";
internal const string Utf8NoBom = "utf8NoBOM";
internal const string Utf32 = "utf32";
internal const string Default = "default";
internal const string OEM = "oem";
internal const string ANSI = "ansi";
internal const string String = "string";
internal const string Unknown = "unknown";
CarloToso marked this conversation as resolved.
Show resolved Hide resolved

internal static readonly string[] TabCompletionResults = {
Ascii, BigEndianUnicode, BigEndianUtf32, OEM, Unicode, Utf7, Utf8, Utf8Bom, Utf8NoBom, Utf32
CarloToso marked this conversation as resolved.
Show resolved Hide resolved
};

internal static readonly Dictionary<string, Encoding> encodingMap = new Dictionary<string, Encoding>(StringComparer.OrdinalIgnoreCase)
internal static readonly Dictionary<string, Encoding> encodingMap = new(StringComparer.OrdinalIgnoreCase)
{
{ Ascii, Encoding.ASCII },
{ BigEndianUnicode, Encoding.BigEndianUnicode },
Expand All @@ -43,6 +45,7 @@ internal static class EncodingConversion
{ Utf8Bom, Encoding.UTF8 },
{ Utf8NoBom, Encoding.Default },
{ Utf32, Encoding.UTF32 },
{ ANSI, Encoding.GetEncoding(CultureInfo.CurrentCulture.TextInfo.ANSICodePage) },
{ String, Encoding.Unicode },
{ Unknown, Encoding.Unicode },
};
Expand All @@ -60,8 +63,7 @@ internal static Encoding Convert(Cmdlet cmdlet, string encoding)
return Encoding.Default;
}

Encoding foundEncoding;
if (encodingMap.TryGetValue(encoding, out foundEncoding))
if (encodingMap.TryGetValue(encoding, out Encoding foundEncoding))
{
// Write a warning if using utf7 as it is obsolete in .NET5
if (string.Equals(encoding, Utf7, StringComparison.OrdinalIgnoreCase))
Expand Down Expand Up @@ -122,10 +124,10 @@ public override object Transform(EngineIntrinsics engineIntrinsics, object input
}
else
{
return System.Text.Encoding.GetEncoding(stringName);
return Encoding.GetEncoding(stringName);
}
case int intName:
return System.Text.Encoding.GetEncoding(intName);
return Encoding.GetEncoding(intName);
}

return inputData;
Expand Down