Mac에서 dmg를 작성하려면 텍스트를 16 진수로 변환하려고합니다.
나는 hexadecalals가 127보다 큰 ascii 문자들에 대해 mac과 windows에서 같은 문자를 참조하지 않는 것처럼 보입니다. 그리고 기본 javascript 함수는 "windows"번역본만을 제공합니다.
나 16 진수로 "맥"번역 ... 내가 지금까지하고 있어요Mac에서 텍스트를 16 진수로 변환
필요합니다
const fileData = await parseJson(readFile(item.file, "utf-8"))
const buttonsStr = labelToHex(fileData.lang)
function labelToHex(label: string) {
return hexEncode(label).toString().toUpperCase()
}
function hexEncode(str: string) {
let i
let result = ""
for (i = 0; i < str.length; i++) {
result += unicodeToHex(str.charCodeAt(i))
}
return result
}
function unicodeToHex(unicode: number) {
const hex = unicode.toString(16)
return ("0" + hex).slice(-2)
}
내가 전달하는 경우 : 프랑스어 EAE
내가 얻을 : (46) (72) (61) (e) E7 61 69 73 E9 E0의 E8
하지만 난 다시 읽을 때, 내가 얻을 : FranÀais È ‡ Ë
내가 기대하고있어 g 동부 : 46 72 61 6E 8D 61 69 73 8E 88 8F
그래서 다시 읽는 준다 : 46 72 61 6E (E7) 61 69 73 E9 E0의 E8이 그 장에 대응
:
https://academic.evergreen.edu/projects/biophysics/technotes/program/ascii_ext-mac.htm https://academic.evergreen.edu/projects/biophysics/technotes/program/ascii_ext-pc.htm
그럼에도 불구하고 OS를 기반으로하는 16 진수로 변환되는 npm 패키지를 찾지 못했습니다. 또는 여전히 불안한 js 기능을 찾을 수 없었습니다.
나는 아이디어가 부족하고있어 막이해야 할 다음에
function unicodeToHex(unicode: number) {
if (unicode < 128) {
const hex = unicode.toString(16)
return ("0" + hex).slice(-2)
}
if (unicode === 233) { return "8E" }//é
if (unicode === 224) { return "88" }//à
if (unicode === 232) { return "8F" }//è
return "3F" //?
}
하지만 난 정말하지 않도록하고 싶습니다 ...
charCodeAt는 유니 코드 값을 반환합니다. 이는 1 바이트 트리밍과 관련이 있습니다. 노드에 문자열의 16 진수 값만 원한다면. 이것을 시도해보십시오 ->'새로운 버퍼 ('Français éàè'). toString ('hex')'= '4672616ec3a761697320c3a9c3a0c3a8', 즉 16 바이트입니다. 11 문자열입니다. – Keith
그것은 논리적 인 것처럼 보이지만 여전히 내 dmg에서는 작동하지 않습니다 .. 나는 éàè 대신에 쓰레기를 얻습니다 : √ß√âß ß®_ 나는 그것이 dmg가 그것을 알지 못하기 때문에 그것이라고 생각하게 만듭니다 .8 ? – ether
'dmg는 utf8을 모릅니다'매우 가능 .. .. 그렇다면 utf8을 선택한 코드 페이지로 변환하는 도구가 있습니다 .. dmg 파일의 코드 페이지를 찾을 수 있다면 -> https://www.npmjs.com/package/codepage – Keith