You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何使用JavaScript将阿拉伯字符串编码为Windows-1256格式

实现Windows-1256字符串编码函数(对应你的解码函数反向)

你的解码函数是把URL编码格式的Windows-1256字节串转成原始字符串,反向的编码逻辑需要完成两个核心步骤:把字符串转成Windows-1256编码的字节数组,再将每个字节转换成%XX格式的URL编码(同时把空格替换成+,对应你解码时的split('+')处理)。

因为JavaScript原生的TextEncoder只支持UTF-8,所以我们需要通过Blob API来实现Windows-1256的编码转换。下面提供两种实现方式:

同步编码函数(适用于Worker或允许同步IO的场景)

function encode(str) {
  // 将字符串转换为Windows-1256编码的ArrayBuffer
  const blob = new Blob([str], { type: 'text/plain; charset=windows-1256' });
  const reader = new FileReaderSync();
  const buffer = reader.readAsArrayBuffer(blob);
  const uint8Array = new Uint8Array(buffer);

  // 将每个字节转换为%XX格式的十六进制字符串(大写)
  const encodedSegments = Array.from(uint8Array).map(byte => 
    `%${byte.toString(16).padStart(2, '0').toUpperCase()}`
  );

  // 把空格对应的%20替换为+,匹配你解码时的处理逻辑
  return encodedSegments.join('').replace(/%20/g, '+');
}

异步编码函数(适用于浏览器主线程)

如果在浏览器主线程中使用,FileReaderSync会阻塞主线程,更推荐异步版本:

async function encode(str) {
  const blob = new Blob([str], { type: 'text/plain; charset=windows-1256' });
  const buffer = await blob.arrayBuffer();
  const uint8Array = new Uint8Array(buffer);

  const encodedSegments = Array.from(uint8Array).map(byte => 
    `%${byte.toString(16).padStart(2, '0').toUpperCase()}`
  );

  return encodedSegments.join('').replace(/%20/g, '+');
}

测试验证

你可以用你的解码函数反向测试:

// 测试单个字符串
const originalStr = decode('%E3%CD%E3%CF');
console.log(encode(originalStr)); // 应该输出 %E3%CD%E3%CF

// 测试带空格的字符串数组
const decodedArr = '%C7%E1%DA%E1%E6%E3+%2D%CA%DA%E1%ED%E3+%C7%D3%C7%D3%EC'.split('+').map(decode);
// 异步版本需要用await
(async () => {
  const encodedStr = (await Promise.all(decodedArr.map(encode))).join('+');
  console.log(encodedStr); // 应该输出原字符串 %C7%E1%DA%E1%E6%E3+%2D%CA%DA%E1%ED%E3+%C7%D3%C7%D3%EC
})();

注意事项

  • 这个实现依赖浏览器环境的Blob和FileReader API,如果是Node.js环境,需要用iconv-lite之类的库来处理Windows-1256编码(Node.js原生不支持该编码)。
  • 确保输入的字符串是有效的Unicode字符串,这样才能正确转换为Windows-1256编码(Windows-1256覆盖了阿拉伯语字符集,大部分常用阿拉伯字符都能正确转换)。

内容的提问来源于stack exchange,提问作者hesham shawky

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.06 19:09:04