diff --git a/core/src/xml/tree.rs b/core/src/xml/tree.rs
index ef45764f8..2aadb79b0 100644
--- a/core/src/xml/tree.rs
+++ b/core/src/xml/tree.rs
@@ -456,7 +456,7 @@ impl<'gc> XmlNode<'gc> {
result.push_byte(b' ');
result.push_str(&key);
result.push_str(WStr::from_units(b"=\""));
- result.push_str(WStr::from_units(value.as_bytes()));
+ result.push_utf8(&value);
result.push_byte(b'"');
}
@@ -480,7 +480,7 @@ impl<'gc> XmlNode<'gc> {
let value = self.0.read().node_value.unwrap();
let value = value.to_utf8_lossy();
let value = escape(&value);
- result.push_str(WStr::from_units(value.as_bytes()));
+ result.push_utf8(&value);
}
Ok(())
diff --git a/tests/tests/swfs/avm1/xml_to_string/output.txt b/tests/tests/swfs/avm1/xml_to_string/output.txt
index f23748090..b605fe699 100644
--- a/tests/tests/swfs/avm1/xml_to_string/output.txt
+++ b/tests/tests/swfs/avm1/xml_to_string/output.txt
@@ -1,8 +1,13 @@
I'm a text node!
+<продукция>Название_Nameпродукция>
I'm a text node!
+<продукция>Название_Nameпродукция>
"Test" Node 2
I'm a text node!
+<продукция>Название_Nameпродукция>
"Test" Node 2
-I'm a text node!
+I'm a text node!
+<продукция>Название_Nameпродукция>
+<продукция>Название_Nameпродукция>
diff --git a/tests/tests/swfs/avm1/xml_to_string/test.fla b/tests/tests/swfs/avm1/xml_to_string/test.fla
index bc8f305a3..43c80aa99 100644
Binary files a/tests/tests/swfs/avm1/xml_to_string/test.fla and b/tests/tests/swfs/avm1/xml_to_string/test.fla differ
diff --git a/tests/tests/swfs/avm1/xml_to_string/test.swf b/tests/tests/swfs/avm1/xml_to_string/test.swf
index 1c452d5f1..0b4b4017e 100644
Binary files a/tests/tests/swfs/avm1/xml_to_string/test.swf and b/tests/tests/swfs/avm1/xml_to_string/test.swf differ