diff --git a/Source/Editor/Managed/ManagedEditor.Internal.cpp b/Source/Editor/Managed/ManagedEditor.Internal.cpp index 53c0fbab2..8ee058552 100644 --- a/Source/Editor/Managed/ManagedEditor.Internal.cpp +++ b/Source/Editor/Managed/ManagedEditor.Internal.cpp @@ -204,7 +204,7 @@ DEFINE_INTERNAL_CALL(bool) EditorInternal_SaveJsonAsset(MString* outputPathObj, FileSystem::NormalizePath(outputPath); const StringView dataObjChars = MCore::String::GetChars(dataObj); - const StringAsANSI<> data(dataObjChars.Get(), dataObjChars.Length()); + const StringAsUTF8<> data(dataObjChars.Get(), dataObjChars.Length()); const StringAnsiView dataAnsi(data.Get(), data.Length()); const StringView dataTypeNameObjChars = MCore::String::GetChars(dataTypeNameObj); diff --git a/Source/Engine/Serialization/JsonSerializer.cs b/Source/Engine/Serialization/JsonSerializer.cs index 076e8abe7..076beef7d 100644 --- a/Source/Engine/Serialization/JsonSerializer.cs +++ b/Source/Engine/Serialization/JsonSerializer.cs @@ -15,6 +15,17 @@ using Newtonsoft.Json.Serialization; namespace FlaxEngine.Json { + sealed class StringWriterWithEncoding : StringWriter + { + public override Encoding Encoding { get; } + + public StringWriterWithEncoding(System.Text.StringBuilder sb, IFormatProvider formatProvider, Encoding encoding) + : base(sb, formatProvider) + { + Encoding = encoding; + } + } + partial class JsonSerializer { internal class SerializerCache @@ -37,7 +48,7 @@ namespace FlaxEngine.Json { IsManagedOnly = isManagedOnly; StringBuilder = new StringBuilder(256); - StringWriter = new StringWriter(StringBuilder, CultureInfo.InvariantCulture); + StringWriter = new StringWriterWithEncoding(StringBuilder, CultureInfo.InvariantCulture, Encoding.UTF8); MemoryStream = new UnmanagedMemoryStream((byte*)0, 0); #if FLAX_EDITOR