이 페이지에서

QStringEncoder Class

QStringEncoder 클래스는 텍스트를 위한 상태 기반 인코더를 제공합니다. 더 보기...

헤더: #include <QStringEncoder>
CMake: find_package(Qt6 REQUIRED COMPONENTS Core)
target_link_libraries(mytarget PRIVATE Qt6::Core)
qmake: QT += core
상속: QStringConverter

참고: 이 클래스의 모든 함수는 재입력 가능합니다.

공개 유형

공개 함수

QStringEncoder()
QStringEncoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)
QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)
char *appendToBuffer(char *out, QStringView in)
QStringEncoder::DecodedData<QStringView> encode(QStringView in)
QStringEncoder::DecodedData<const QString &> encode(const QString &in)
(since 6.11) QStringEncoder::FinalizeResult finalize()
(since 6.11) QStringEncoder::FinalizeResult finalize(char *out, qsizetype maxlen)
qsizetype requiredSpace(qsizetype inputLength) const
QStringEncoder::DecodedData<QStringView> operator()(QStringView in)
QStringEncoder::DecodedData<const QString &> operator()(const QString &in)

상세 설명

텍스트 인코더는 특정 인코딩을 사용하여 Qt의 내부 표현 형식의 텍스트를 인코딩된 텍스트 형식으로 변환합니다.

다음 코드를 사용하여 문자열을 유니코드에서 로컬 인코딩으로 변환할 수 있습니다.

QString string = "...";
auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8);
QByteArray encodedString = fromUtf16(string);

인코더는 호출 사이에 필요한 모든 상태를 기억하므로, 예를 들어 네트워크를 통해 데이터를 수신할 때와 같이 청크 단위로 데이터를 변환하는 것도 새로운 데이터가 들어올 때마다 인코더를 호출하기만 하면 간단하게 처리할 수 있습니다:

auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8);

QByteArray encoded;
while (new_data_available() && !fromUtf16.hasError()) {
    QString chunk = get_new_data();
    encoded += fromUtf16(chunk);
}
auto result = fromUtf16.finalize();
if (result.error != QStringEncoder::FinalizeResult::Error::NoError) {
    // Handle error
}

QStringEncoder 객체는 청크 간 상태를 유지하므로, UTF-16 대리 문자가 여러 청크에 걸쳐 분할되어 있더라도 올바르게 작동합니다.

QStringEncoder 객체는 내부 상태 때문에 복사할 수는 없지만, 이동은 가능합니다.

QStringConverter 및 QStringDecoder도 참조하십시오 .

멤버 유형 문서

[alias] QStringEncoder::FinalizeResult

이것은 QStringConverter::FinalizeResultChar<char>의 별칭입니다.

멤버 함수 설명서

[constexpr noexcept] QStringEncoder::QStringEncoder()

default는 인코더를 생성합니다. 기본 인코더는 유효하지 않으므로 텍스트 변환에 사용할 수 없습니다.

[explicit] QStringEncoder::QStringEncoder(QAnyStringView name, QStringConverter::Flags flags = Flag::Default)

name 및 flags 를 사용하여 인코더 객체를 생성합니다. name 가 알려진 인코딩의 이름이 아닌 경우, 유효하지 않은 변환기가 생성됩니다.

참고: Qt 6.8 이전버전에서는 이 함수가 const char * 만 받아들이며, 이 매개변수는 UTF-8로 인코딩된 것으로 간주되었습니다.

isValid()도 참조하십시오 .

[explicit constexpr] QStringEncoder::QStringEncoder(QStringConverter::Encoding encoding, QStringConverter::Flags flags = Flag::Default)

encoding 와 flags 를 사용하여 인코더 객체를 생성합니다.

char *QStringEncoder::appendToBuffer(char *out, QStringView in)

in 를 인코딩하고, 인코딩된 결과를 out 에서 시작하는 버퍼에 기록합니다. 기록된 데이터의 끝을 가리키는 포인터를 반환합니다.

참고: out 는 디코딩된 모든 데이터를 담을 수 있을 만큼 충분히 커야 합니다. in 를 인코딩하는 데 필요한 최대 크기를 확인하려면 requiredSpace()를 사용하십시오. 이 함수는 out 와 out + requiredSpace() 사이의 모든 바이트 영역에 데이터를 쓸 수 있으며, 여기에는 반환된 끝 포인터를 넘어가는 영역도 포함됩니다.

requiredSpace()도 참조하십시오 .

QStringEncoder::DecodedData<QStringView> QStringEncoder::encode(QStringView in)

QStringEncoder::DecodedData<QStringView> QStringEncoder::operator()(QStringView in)

QStringEncoder::DecodedData<const QString &> QStringEncoder::encode(const QString &in)

QStringEncoder::DecodedData<const QString &> QStringEncoder::operator()(const QString &in)

in 를 변환하고, QByteArray 로 암시적으로 변환 가능한 구조체를 반환합니다.

QString string = "...";
auto fromUtf16 = QStringEncoder(QStringEncoder::Utf8);
auto data = fromUtf16(string); // data's type is QStringEncoder::DecodedData<const QString &>
QByteArray encodedString = fromUtf16(string); // Implicit conversion to QByteArray

// Here you have to cast "data" to QByteArray
auto func = [&]() { return !fromUtf16.hasError() ? QByteArray(data) : "foo"_ba; };

[since 6.11] QStringEncoder::FinalizeResult QStringEncoder::finalize()

[since 6.11] QStringEncoder::FinalizeResult QStringEncoder::finalize(char *out, qsizetype maxlen)

디코더에 더 이상 데이터가 도착하지 않을 것임을 알립니다.

또한 디코딩이 보류 중이던 잔여 콘텐츠의 데이터를 제공할 수도 있습니다. 처리해야 할 잔여 데이터가 없는 경우, 반환 값의 ` error ` 필드는 ` NoError`로 설정됩니다.

out 가 제공되고 null이 아닌 경우, 최대 maxlen 개의 문자가 기록될 수 있는 공간이 반드시 있어야 합니다. 이 공간에는 최대 이만큼의 잔여 출력 문자가 기록되며, 끝은 반환 값의 next 필드로 표시됩니다. 일반적으로 이 잔여 데이터는 변환되지 않은 나머지 입력 문자 하나당 하나의 대체 문자로 구성되어야 합니다. ISO-2022-JP와 같은 상태 기반 인코딩을 사용하는 경우, 문자 스트림에서 현재 상태를 복원하거나 종료하기 위한 바이트가 여기에 기록될 수도 있습니다.

out 를 통해 모든 잔여 내용이 전달되었거나, out 가 nullptr 이거나, 잔여 데이터가 없는 경우, finalize()에서 반환되면 디코더가 재설정됩니다. 그렇지 않은 경우, finalize()를 추가로 호출하여 남은 데이터를 가져오거나 버릴 수 있습니다.

이 함수들은 Qt 6.11에서 도입되었습니다.

hasError() 및 appendToBuffer()도 참조하십시오 .

qsizetype QStringEncoder::requiredSpace(qsizetype inputLength) const

inputLength 로 디코딩된 데이터를 처리하는 데 필요한 최대 문자 수를 반환합니다.

appendToBuffer()도 참조하십시오 .

© 2026 The Qt Company Ltd. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd. in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.