ladybird/Ladybird/Qt/StringUtils.cpp
Timothy Flynn 82c827fc56 Ladybird/Qt: Support non-ASCII when converting a QString to a String
QString is UTF-16, thus QString::size returns the number of UTF-16 code
units. Thus, we would fail to perform, for example:

    ak_string_from_qstring(QString("😀"));

Which is 2 UTF-16 code units, but 4 UTF-8 code units.
2023-12-04 12:03:48 -07:00

23 lines
645 B
C++

/*
* Copyright (c) 2022, Andreas Kling <kling@serenityos.org>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#include "StringUtils.h"
AK::DeprecatedString ak_deprecated_string_from_qstring(QString const& qstring)
{
return AK::DeprecatedString(qstring.toUtf8().data());
}
ErrorOr<String> ak_string_from_qstring(QString const& qstring)
{
auto utf8_data = qstring.toUtf8();
return String::from_utf8(StringView(utf8_data.data(), utf8_data.size()));
}
QString qstring_from_ak_string(StringView ak_string)
{
return QString::fromUtf8(ak_string.characters_without_null_termination(), static_cast<qsizetype>(ak_string.length()));
}