diff --git a/native_engine/impl/ark/native_value/ark_native_string.cpp b/native_engine/impl/ark/native_value/ark_native_string.cpp index e519709..c20fb3e 100644 --- a/native_engine/impl/ark/native_value/ark_native_string.cpp +++ b/native_engine/impl/ark/native_value/ark_native_string.cpp @@ -45,9 +45,9 @@ void ArkNativeString::GetCString(char* buffer, size_t size, size_t* length) LocalScope scope(vm); Global val = value_; if (buffer == nullptr) { - *length = val->Length(); + *length = val->Utf8Length() - 1; } else if (size != 0) { - int copied = val->WriteUtf8(buffer, size) - 1; + int copied = val->WriteUtf8(buffer, val->Utf8Length()); buffer[copied] = '\0'; *length = copied; } else { @@ -86,7 +86,7 @@ size_t ArkNativeString::EncodeWriteUtf8(char* buffer, size_t bufferSize, int32_t break; } - str->WriteUtf8((buffer + pos), writableSize); + str->WriteUtf8((buffer + pos), str->Utf8Length()); writableSize -= len; pos += len; }