diff options
| author | Chris Djali <AnyOldName3@users.noreply.github.com> | 2025-02-28 18:52:49 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2025-02-28 19:52:49 +0100 |
| commit | 62ccbb1d026b08ae70973e5b15adecd980556f0e (patch) | |
| tree | 92a45fedb87b8a80c4d8538ddcf901cec3c03ca8 | |
| parent | 6299be28e13662d1b28be5f77f53ea2118e87dae (diff) | |
Write BOM if original file used one (#2213)
Important for UTF-16 as lots of things can't detect or read UTF-16 without a BOM
| -rw-r--r-- | src/texteditor.cpp | 10 | ||||
| -rw-r--r-- | src/texteditor.h | 1 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/texteditor.cpp b/src/texteditor.cpp index 281a545d..e015dc91 100644 --- a/src/texteditor.cpp +++ b/src/texteditor.cpp @@ -65,6 +65,7 @@ void TextEditor::clear() m_filename.clear(); m_encoding.clear(); + m_needsBOM = false; setPlainText(""); dirty(false); document()->setModified(false); @@ -80,7 +81,7 @@ bool TextEditor::load(const QString& filename) m_filename = filename; - const QString s = MOBase::readFileText(filename, &m_encoding); + const QString s = MOBase::readFileText(filename, &m_encoding, &m_needsBOM); setPlainText(s); document()->setModified(false); @@ -106,10 +107,13 @@ bool TextEditor::save() file.open(QIODevice::WriteOnly); file.resize(0); - auto codec = QStringConverter::encodingForName(m_encoding.toLocal8Bit()); + auto codec = QStringConverter::encodingForName(m_encoding.toUtf8()); if (!codec.has_value()) return false; - QStringEncoder encoder(codec.value()); + QStringConverter::Flags flags = QStringEncoder::Flag::Default; + if (m_needsBOM) + flags |= QStringConverter::Flag::WriteBom; + QStringEncoder encoder(codec.value(), flags); QString data = toPlainText().replace("\n", "\r\n"); diff --git a/src/texteditor.h b/src/texteditor.h index 7f6adcdb..e6694518 100644 --- a/src/texteditor.h +++ b/src/texteditor.h @@ -130,6 +130,7 @@ private: QColor m_highlightBackground; QString m_filename; QString m_encoding; + bool m_needsBOM; bool m_dirty; bool m_loading; |
