From 1c4df829e767c77141e38af0786cbe6978696cad Mon Sep 17 00:00:00 2001 From: babaohuang Date: Thu, 14 Dec 2023 20:49:46 +0800 Subject: [PATCH] Update generate.ts --- src/pages/api/generate.ts | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/src/pages/api/generate.ts b/src/pages/api/generate.ts index 76549148..fc4a71a1 100644 --- a/src/pages/api/generate.ts +++ b/src/pages/api/generate.ts @@ -44,16 +44,20 @@ export const post: APIRoute = async(context) => { async start(controller) { const decoder = new TextDecoder('utf-8') for await (const chunk of stream) { - const value = chunk instanceof Uint8Array ? chunk : new TextEncoder().encode(chunk) - const text = decoder.decode(value, { stream: true }) - controller.enqueue(new TextEncoder().encode(text)) + // Assuming `chunk` is a `Response` object, we need to get the text from it + const textChunk = await chunk.text() + // Decode the text chunk while respecting UTF-8 multi-byte characters + const text = decoder.decode(new TextEncoder().encode(textChunk), { stream: true }) + // Enqueue the text to the stream + controller.enqueue(text) } - // When the source stream is finished, close our stream. + // Once the stream is finished, flush the decoder to get any trailing text + controller.enqueue(decoder.decode()) controller.close() }, }) - return new Response(responseStream, { status: 200, headers: { 'Content-Type': 'text/plain' } }) + return new Response(responseStream, { status: 200, headers: { 'Content-Type': 'text/plain; charset=utf-8' } }) } catch (error) { console.error(error) return new Response(JSON.stringify({