diff --git a/src/DevToys.Tools.UnitTests/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoderGuiToolTests.cs b/src/DevToys.Tools.UnitTests/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoderGuiToolTests.cs
index b3cb721bc0..3284c483c8 100644
--- a/src/DevToys.Tools.UnitTests/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoderGuiToolTests.cs
+++ b/src/DevToys.Tools.UnitTests/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoderGuiToolTests.cs
@@ -25,18 +25,68 @@ public async Task EncodeUtf8()
_inputBox.Text("Hello world &é'(-è_çèà)");
await _tool.WorkTask;
_outputBox.Text.Should().Be("SGVsbG8gd29ybGQgJsOpJygtw6hfw6fDqMOgKQ==");
+ }
+
+ [Fact]
+ public async Task EncodeUtf16()
+ {
+ var encodingOption = (IUISelectDropDownList)((IUISetting)_toolView.GetChildElementById("base64-text-encoding-setting")).InteractiveElement;
+ encodingOption.Select(2); // Select UTF-16
+
+ _inputBox.Text("Hello world &é'(-è_çèà)");
+ await _tool.WorkTask;
+ _outputBox.Text.Should().Be("//5IAGUAbABsAG8AIAB3AG8AcgBsAGQAIAAmAOkAJwAoAC0A6ABfAOcA6ADgACkA");
}
[Fact]
public async Task EncodeAscii()
{
var encodingOption = (IUISelectDropDownList)((IUISetting)_toolView.GetChildElementById("base64-text-encoding-setting")).InteractiveElement;
- encodingOption.Select(1); // Select ASCII
+ encodingOption.Select(0); // Select ASCII
_inputBox.Text("Hello world &é'(-è_çèà)");
await _tool.WorkTask;
_outputBox.Text.Should().Be("SGVsbG8gd29ybGQgJj8nKC0/Xz8/Pyk=");
}
+
+ [Fact]
+ public async Task DecodeUtf8()
+ {
+ var conversionMode = (IUISwitch)_toolView.GetChildElementById("base64-text-conversion-mode-switch");
+ conversionMode.Off(); // Switch to Decode
+
+ _inputBox.Text("SGVsbG8gd29ybGQgJsOpJygtw6hfw6fDqMOgKQ==");
+ await _tool.WorkTask;
+ _outputBox.Text.Should().Be("Hello world &é'(-è_çèà)");
+ }
+
+ [Fact]
+ public async Task DecodeUtf16()
+ {
+ var conversionMode = (IUISwitch)_toolView.GetChildElementById("base64-text-conversion-mode-switch");
+ conversionMode.Off(); // Switch to Decode
+
+ var encodingOption = (IUISelectDropDownList)((IUISetting)_toolView.GetChildElementById("base64-text-encoding-setting")).InteractiveElement;
+ encodingOption.Select(2); // Select UTF-16
+
+ _inputBox.Text("//5IAGUAbABsAG8AIAB3AG8AcgBsAGQAIAAmAOkAJwAoAC0A6ABfAOcA6ADgACkA");
+ await _tool.WorkTask;
+ _outputBox.Text.Should().Be("Hello world &é'(-è_çèà)");
+ }
+
+ [Fact]
+ public async Task DecodeAscii()
+ {
+ var conversionMode = (IUISwitch)_toolView.GetChildElementById("base64-text-conversion-mode-switch");
+ conversionMode.Off(); // Switch to Decode
+
+ var encodingOption = (IUISelectDropDownList)((IUISetting)_toolView.GetChildElementById("base64-text-encoding-setting")).InteractiveElement;
+ encodingOption.Select(0); // Select ASCII
+
+ _inputBox.Text("SGVsbG8gd29ybGQgJj8nKC0/Xz8/Pyk=");
+ await _tool.WorkTask;
+ _outputBox.Text.Should().Be("Hello world &?'(-?_???)");
+ }
[Fact]
public async Task SwitchConversionMode()
diff --git a/src/DevToys.Tools.UnitTests/Tools/Helpers/Base64HelperTests.cs b/src/DevToys.Tools.UnitTests/Tools/Helpers/Base64HelperTests.cs
index b78014f9c5..5e7feeb9fe 100644
--- a/src/DevToys.Tools.UnitTests/Tools/Helpers/Base64HelperTests.cs
+++ b/src/DevToys.Tools.UnitTests/Tools/Helpers/Base64HelperTests.cs
@@ -6,22 +6,26 @@ namespace DevToys.Tools.UnitTests.Tools.Helpers;
public class Base64HelperTests
{
[Theory]
- [InlineData(null, false)]
- [InlineData("", false)]
- [InlineData(" ", false)]
- [InlineData("aGVsbG8gd29ybGQ=", true)]
- [InlineData("aGVsbG8gd2f9ybGQ=", false)]
- [InlineData("SGVsbG8gV29y", true)]
- [InlineData("SGVsbG8gVa29y", false)]
- public void IsValid(string input, bool expectedResult)
+ [InlineData(null, Base64Encoding.Utf8, false)]
+ [InlineData("", Base64Encoding.Utf8, false)]
+ [InlineData(" ", Base64Encoding.Utf8, false)]
+ [InlineData("aGVsbG8gd29ybGQ=", Base64Encoding.Utf8, true)]
+ [InlineData("aGVsbG8gd2f9ybGQ=", Base64Encoding.Utf8, false)]
+ [InlineData("SGVsbG8gV29y", Base64Encoding.Utf8, true)]
+ [InlineData("SGVsbG8gVa29y", Base64Encoding.Utf8, false)]
+ [InlineData("//5oAGUAbABsAG8AIAB3AG8AcgBsAGQA", Base64Encoding.Utf16, true)]
+ [InlineData("//5oAGUAbABsAG8AIAB3AG8AcgBsAGQAAAA=", Base64Encoding.Utf8, false)] // NUL
+ [InlineData("aGVsbG8gd29ybGTvv70=", Base64Encoding.Utf8, false)] // Invalid Unicode char
+ internal void IsValid(string input, Base64Encoding encoding, bool expectedResult)
{
- Base64Helper.IsBase64DataStrict(input).Should().Be(expectedResult);
+ Base64Helper.IsBase64DataStrict(input, encoding).Should().Be(expectedResult);
}
[Theory]
[InlineData(null, "", Base64Encoding.Utf8)]
[InlineData("Hello World!", "SGVsbG8gV29ybGQh", Base64Encoding.Utf8)]
[InlineData("Hello World! é)à", "SGVsbG8gV29ybGQhIMOpKcOg", Base64Encoding.Utf8)]
+ [InlineData("Hello World! é)à", "//5IAGUAbABsAG8AIABXAG8AcgBsAGQAIQAgAOkAKQDgAA==", Base64Encoding.Utf16)]
[InlineData("Hello World! é)à", "SGVsbG8gV29ybGQhID8pPw==", Base64Encoding.Ascii)]
internal void FromTextToBase64(string input, string expectedResult, Base64Encoding encoding)
{
@@ -38,6 +42,7 @@ internal void FromTextToBase64(string input, string expectedResult, Base64Encodi
[InlineData(null, "", Base64Encoding.Utf8)]
[InlineData("SGVsbG8gV29ybGQh", "Hello World!", Base64Encoding.Utf8)]
[InlineData("SGVsbG8gV29ybGQhIMOpKcOg", "Hello World! é)à", Base64Encoding.Utf8)]
+ [InlineData("//5IAGUAbABsAG8AIABXAG8AcgBsAGQAIQAgAOkAKQDgAA==", "Hello World! é)à", Base64Encoding.Utf16)]
[InlineData("SGVsbG8gV29ybGQhID8pPw==", "Hello World! ?)?", Base64Encoding.Ascii)]
internal void FromBase64ToText(string input, string expectedResult, Base64Encoding encoding)
{
diff --git a/src/DevToys.Tools/Helpers/Base64Helper.cs b/src/DevToys.Tools/Helpers/Base64Helper.cs
index 1f5c835c42..76ba3f7cad 100644
--- a/src/DevToys.Tools/Helpers/Base64Helper.cs
+++ b/src/DevToys.Tools/Helpers/Base64Helper.cs
@@ -7,7 +7,7 @@ namespace DevToys.Tools.Helpers;
internal static partial class Base64Helper
{
- internal static bool IsBase64DataStrict(string? data)
+ internal static bool IsBase64DataStrict(string? data, Base64Encoding encoding)
{
if (string.IsNullOrWhiteSpace(data))
{
@@ -38,8 +38,11 @@ internal static bool IsBase64DataStrict(string? data)
try
{
- byte[]? decodedData = Convert.FromBase64String(data);
- decoded = Encoding.UTF8.GetString(decodedData);
+ Encoding encoder = GetEncoder(encoding);
+ byte[] decodedData = Convert.FromBase64String(data);
+ using MemoryStream decodedStream = new(decodedData);
+ using StreamReader reader = new(decodedStream, encoder);
+ decoded = reader.ReadToEnd();
}
catch (Exception)
{
@@ -81,7 +84,13 @@ internal static string FromTextToBase64(string? data, Base64Encoding encoding, I
try
{
Encoding encoder = GetEncoder(encoding);
- byte[]? dataBytes = encoder.GetBytes(data);
+
+ byte[] dataBytes = new byte[encoder.Preamble.Length + encoder.GetByteCount(data)];
+ using(MemoryStream dataStream = new(dataBytes))
+ using (StreamWriter writer = new(dataStream, encoder))
+ {
+ writer.Write(data);
+ }
cancellationToken.ThrowIfCancellationRequested();
@@ -127,7 +136,7 @@ internal static string FromBase64ToText(string? data, Base64Encoding encoding, I
if (encoder is UTF8Encoding && decodedData != null)
{
- byte[] preamble = encoder.GetPreamble();
+ byte[] preamble = Encoding.UTF8.GetPreamble();
if (decodedData.Take(preamble.Length).SequenceEqual(preamble))
{
// need to keep it this way to have the dom char
@@ -139,7 +148,10 @@ internal static string FromBase64ToText(string? data, Base64Encoding encoding, I
if (decodedData is not null)
{
- decoded += encoder.GetString(decodedData);
+ using MemoryStream dataStream = new(decodedData);
+ using StreamReader reader = new(dataStream, encoder);
+
+ decoded += reader.ReadToEnd();
}
}
catch (Exception ex) when (ex is OperationCanceledException || ex is FormatException)
@@ -159,8 +171,9 @@ private static Encoding GetEncoder(Base64Encoding encoding)
{
return encoding switch
{
- Base64Encoding.Utf8 => new UTF8Encoding(true),
+ Base64Encoding.Utf8 => new UTF8Encoding(false),
Base64Encoding.Ascii => Encoding.ASCII,
+ Base64Encoding.Utf16 => Encoding.Unicode,
_ => throw new NotSupportedException(),
};
}
diff --git a/src/DevToys.Tools/Models/Base64Encoding.cs b/src/DevToys.Tools/Models/Base64Encoding.cs
index 3f1ec6cb84..7e22ca5d41 100644
--- a/src/DevToys.Tools/Models/Base64Encoding.cs
+++ b/src/DevToys.Tools/Models/Base64Encoding.cs
@@ -3,5 +3,6 @@
internal enum Base64Encoding
{
Utf8,
- Ascii
+ Ascii,
+ Utf16
}
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.Designer.cs b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.Designer.cs
index 33c0f1e094..de2181543c 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.Designer.cs
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.Designer.cs
@@ -258,6 +258,15 @@ internal static string ShortDisplayTitle {
}
}
+ ///
+ /// Looks up a localized string similar to UTF-16.
+ ///
+ internal static string Utf16 {
+ get {
+ return ResourceManager.GetString("Utf16", resourceCulture);
+ }
+ }
+
///
/// Looks up a localized string similar to UTF-8.
///
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.af-ZA.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.af-ZA.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.af-ZA.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.af-ZA.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ar-SA.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ar-SA.resx
index 1d0fd2dc03..f1508bcf73 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ar-SA.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ar-SA.resx
@@ -184,6 +184,9 @@
نص Base64
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.be-BY.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.be-BY.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.be-BY.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.be-BY.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.bn-BD.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.bn-BD.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.bn-BD.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.bn-BD.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ca-ES.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ca-ES.resx
index 74e5279b8a..18436e333a 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ca-ES.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ca-ES.resx
@@ -183,6 +183,9 @@
Text en Base64
+
+
+ UTF-16
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.cs-CZ.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.cs-CZ.resx
index 99529c52d6..cddb990a18 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.cs-CZ.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.cs-CZ.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.da-DK.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.da-DK.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.da-DK.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.da-DK.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.de-DE.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.de-DE.resx
index 13e5b80910..c531db81b0 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.de-DE.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.de-DE.resx
@@ -184,6 +184,9 @@
Base64-Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.el-GR.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.el-GR.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.el-GR.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.el-GR.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.en-GB.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.en-GB.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.en-GB.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.en-GB.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.es-AR.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.es-AR.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.es-AR.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.es-AR.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.es-ES.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.es-ES.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.es-ES.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.es-ES.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.fa-IR.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.fa-IR.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.fa-IR.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.fa-IR.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.fi-FI.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.fi-FI.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.fi-FI.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.fi-FI.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.fr-FR.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.fr-FR.resx
index ecc4810efb..2cc6b2c935 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.fr-FR.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.fr-FR.resx
@@ -184,6 +184,9 @@
Texte Base64
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.he-IL.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.he-IL.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.he-IL.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.he-IL.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.hi-IN.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.hi-IN.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.hi-IN.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.hi-IN.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.hu-HU.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.hu-HU.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.hu-HU.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.hu-HU.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.id-ID.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.id-ID.resx
index 51fded21f8..dcf6a70e03 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.id-ID.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.id-ID.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.is-IS.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.is-IS.resx
index 8eb360e17a..35c5b6fa1b 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.is-IS.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.is-IS.resx
@@ -184,6 +184,9 @@
Base64 Texti
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.it-IT.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.it-IT.resx
index 6183385d83..2a53702096 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.it-IT.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.it-IT.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ja-JP.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ja-JP.resx
index 4a39f3cc4b..886d752794 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ja-JP.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ja-JP.resx
@@ -184,6 +184,9 @@
Base64 テキスト
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ka-GE.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ka-GE.resx
index c0605d2e21..b4e2c44917 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ka-GE.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ka-GE.resx
@@ -184,6 +184,9 @@
Base64 ტექსტი
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.kn-IN.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.kn-IN.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.kn-IN.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.kn-IN.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ko-KR.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ko-KR.resx
index 67d7587816..d1c8186056 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ko-KR.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ko-KR.resx
@@ -184,6 +184,9 @@
Base64 텍스트
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.kw-GB.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.kw-GB.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.kw-GB.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.kw-GB.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.nb.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.nb.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.nb.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.nb.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.nl-NL.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.nl-NL.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.nl-NL.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.nl-NL.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.pl-PL.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.pl-PL.resx
index 4ae529cc86..5c00b05441 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.pl-PL.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.pl-PL.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.pt-BR.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.pt-BR.resx
index e38f9966ed..d7711100da 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.pt-BR.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.pt-BR.resx
@@ -184,6 +184,9 @@
Texto Base64
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.pt-PT.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.pt-PT.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.pt-PT.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.pt-PT.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.resx
index 13b27e479f..6cd91c16c9 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ro-RO.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ro-RO.resx
index 314143cd5b..819368e2fd 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ro-RO.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ro-RO.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ru-RU.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ru-RU.resx
index 95e72a42bb..b1bf071d44 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ru-RU.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ru-RU.resx
@@ -184,6 +184,9 @@
Base64 Текст
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.sr-SP.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.sr-SP.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.sr-SP.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.sr-SP.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.sv-SE.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.sv-SE.resx
index 100301e777..a075cb8bf3 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.sv-SE.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.sv-SE.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ta-IN.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ta-IN.resx
index 756c84daa8..659057f341 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ta-IN.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.ta-IN.resx
@@ -184,6 +184,9 @@
Base64 உரை
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.te-IN.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.te-IN.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.te-IN.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.te-IN.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.tr-TR.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.tr-TR.resx
index 379bb4fce3..a8a4c65a1e 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.tr-TR.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.tr-TR.resx
@@ -184,6 +184,9 @@
64 tabanında Metin
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.uk-UA.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.uk-UA.resx
index 504d53c396..c5d33da9f9 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.uk-UA.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.uk-UA.resx
@@ -184,6 +184,9 @@
Base64 Текст
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.vi-VN.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.vi-VN.resx
index 1c88c4d60a..9ef72c9c21 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.vi-VN.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.vi-VN.resx
@@ -184,6 +184,9 @@
Base64 Text
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.zh-Hans.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.zh-Hans.resx
index 526a45b2f9..2d9a10a791 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.zh-Hans.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.zh-Hans.resx
@@ -184,6 +184,9 @@
Base64文本
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.zh-Hant.resx b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.zh-Hant.resx
index 48eab6cb57..e1fce323e7 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.zh-Hant.resx
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoder.zh-Hant.resx
@@ -184,6 +184,9 @@
Base64 文字
+
+ UTF-16
+
UTF-8
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoderCommandLineTool.cs b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoderCommandLineTool.cs
index b6f3e71d3f..a21bfd3d4b 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoderCommandLineTool.cs
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoderCommandLineTool.cs
@@ -70,7 +70,7 @@ public async ValueTask InvokeAsync(ILogger logger, CancellationToken cancel
break;
case EncodingConversion.Decode:
- if (!Base64Helper.IsBase64DataStrict(result.Data))
+ if (!Base64Helper.IsBase64DataStrict(result.Data, EncodingMode))
{
cancellationToken.ThrowIfCancellationRequested();
Console.Error.WriteLine(Base64TextEncoderDecoder.InvalidBase64);
diff --git a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoderGuiTool.cs b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoderGuiTool.cs
index 90ede66ace..2979776013 100644
--- a/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoderGuiTool.cs
+++ b/src/DevToys.Tools/Tools/EncodersDecoders/Base64Text/Base64TextEncoderDecoderGuiTool.cs
@@ -134,8 +134,10 @@ public UIToolView View
_settingsProvider,
encoder,
onOptionSelected: OnEncodingModeChanged,
+ Item(Base64TextEncoderDecoder.Ascii, Base64Encoding.Ascii),
Item(Base64TextEncoderDecoder.Utf8, Base64Encoding.Utf8),
- Item(Base64TextEncoderDecoder.Ascii, Base64Encoding.Ascii))))),
+ Item(Base64TextEncoderDecoder.Utf16, Base64Encoding.Utf16)
+ )))),
Cell(
GridRows.Input,
@@ -236,7 +238,7 @@ private async Task ConvertAsync(string input, Base64Encoding encoderSetting, Can
break;
case EncodingConversion.Decode:
- if (!string.IsNullOrEmpty(input) && !Base64Helper.IsBase64DataStrict(input))
+ if (!string.IsNullOrEmpty(input) && !Base64Helper.IsBase64DataStrict(input, encoderSetting))
{
cancellationToken.ThrowIfCancellationRequested();
_outputText.Text(Base64TextEncoderDecoder.InvalidBase64);