相关疑难解决方法(0)

在字符串和ArrayBuffers之间转换

是否有一种普遍接受的技术可以有效地将JavaScript字符串转换为ArrayBuffers,反之亦然?具体来说,我希望能够将ArrayBuffer的内容写入localStorage并将其读回.

javascript serialization typed-arrays arraybuffer

231
推荐指数
16
解决办法
30万
查看次数

在发送 POST 数据时阻止 Safari 规范化 Unicode?

显然,Safari 在发送 POST 数据时对 Unicode 进行了规范化,而所有其他主要浏览器只发送它们所提供的内容。

规范化似乎发生在数据通过网络发送之前,并且对数据使用normalize()不起作用(Safari 强制执行 NFC,无论它提供什么)。

当请求带有重音字符的文件名时,这会成为一个问题,它在 NFC 和 NFD 格式中具有不同的代码点。解释基本上归结为Unicode 等价中的“组合字符”与“预组合字符” )。

话虽如此,鉴于 API 不在后端进行自己的规范化,并且需要一个字符串数组(文件名),是否可以在使用 Safari 时在前端发送正确的文件名?

Unicode 规范化问题的一个例子:

const str = 'Rosé'

const nfc = str.normalize()
const nfd = str.normalize('NFD')

console.log(nfc === nfd) // false

console.log(nfc.codePointAt(3)) // 233
console.log(nfd.codePointAt(3)) // 101

console.log(nfc.codePointAt(4)) // undefined
console.log(nfd.codePointAt(4)) // 769
Run Code Online (Sandbox Code Playgroud)

一个最小的、可重现的例子:

请注意 Chrome 和 Safari 之间的控制台日志差异。

const isCorrectForm = (path, form) => path === path.normalize(`NF${form}`)

const fetchData = async() => {
  const sourcePathC = …
Run Code Online (Sandbox Code Playgroud)

javascript unicode safari rest post

6
推荐指数
1
解决办法
331
查看次数