-
Notifications
You must be signed in to change notification settings - Fork 25
Open
Labels
featureNew functionality or improvementNew functionality or improvement
Description
Support plan
- is this issue currently blocking your project? (yes/no): yes
- is this issue affecting a production system? (yes/no): no
Context
- node version:
17.9.0 - module version:
7.0.3 - environment (e.g. node, browser, native): node
- used with (e.g. hapi application, another framework, standalone, ...): hapi application
- any other relevant information:
What problem are you trying to solve?
Parser doesn't do anything with Content-Type header with charset directive. It only parses payload buffer by utf8, hardcoded. Only way to process non-UTF-8 payload is disable internal parser via route.options.payload.parse: false and decode raw buffer manually, losing all benefits from hapi framework.
import { Server } from '@hapi/hapi'
import { encode } from 'iconv-lite'
async function test(text, charset = 'euc-kr') {
const server = new Server({})
server.route({
method: 'POST',
path: '/',
options: { handler: (req) => req.payload }
})
await server.start()
const { payload } = await server.inject({
method: 'POST',
url: '/',
payload: encode(text, charset),
headers: { 'content-type': `application/json; charset=${charset}` }
})
await server.stop()
return { expected: text, got: payload }
}
test('{"한글":"인코딩"}').then(console.log).catch(console.error)
// { expected: '{"한글":"인코딩"}', got '{"�ѱ�":"���ڵ�"}' }Do you have a new or modified API suggestion to solve the problem?
Metadata
Metadata
Assignees
Labels
featureNew functionality or improvementNew functionality or improvement