Request: μ•…μ„ΌνŠΈ 문자?

에 λ§Œλ“  2011λ…„ 11μ›” 26일  Β·  17μ½”λ©˜νŠΈ  Β·  좜처: request/request

μ•ˆλ…•!

μ•…μ„ΌνŠΈκ°€ μžˆλŠ” 문자 Γ‘ Γ© Γ³ ΓΊ Γͺ Γ£ λ“±μœΌλ‘œ μ›Ή νŽ˜μ΄μ§€λ₯Ό μŠ€ν¬λž©ν•˜λ €κ³  ν•©λ‹ˆλ‹€. encoding: utf-8 을(λ₯Ό) μ‹œλ„ν–ˆμ§€λ§Œ μ—¬μ „νžˆ 결과에 이 λ¬Έμžκ°€ ν‘œμ‹œλ©λ‹ˆλ‹€.

 request.get({
      uri: url,
      encoding: 'utf-8'
      // ...

κ°€μž₯ μœ μš©ν•œ λŒ“κΈ€

μš”μ²­({url: " www.example.com ", 인코딩: "latin1" }, ν•¨μˆ˜(였λ₯˜, 응닡, HTML) {
console.log('였λ₯˜:', 였λ₯˜);

λͺ¨λ“  17 λŒ“κΈ€

νŽ˜μ΄μ§€μ—μ„œ μ‚¬μš©ν•˜λŠ” 인코딩은 λ¬΄μ—‡μž…λ‹ˆκΉŒ? ISO에 상관없이 utf8 νŒŒμ„œλ₯Ό 던질 μˆ˜λŠ” μ—†μŠ΅λ‹ˆλ‹€.

Btw, κ·ΈλŠ” SO에 ꡐ차 κ²Œμ‹œν–ˆμŠ΅λ‹ˆλ‹€. http://stackoverflow.com/questions/8332500/module-request-how-to-properly-retrieve-accented-characters

@thejh νŽ˜μ΄μ§€ 인코딩은 iso-8859-1이며 λ‹€μŒλ„ μ‹œλ„ν–ˆμŠ΅λ‹ˆλ‹€.

request.get({
    uri: url,
    encoding: 'iso-8859-1'
    // ...

그리고 λ‚˜λŠ” μ–»μ—ˆλ‹€:

Error: Unknown encoding

ν•˜μ§€λ§Œ 이 문제λ₯Ό 읽고 μžˆμŠ΅λ‹ˆλ‹€. https://github.com/mikeal/request/issues/27 λ‹€μŒ http://nodejs.org/docs/v0.6.0/api/http.html#request.setEncoding

Set the encoding for the request body. Either 'utf8' or 'binary'. Defaults to null, which means that the 'data' event will emit a Buffer object..

그것은 νš¨κ³Όκ°€ μžˆμ—ˆλ‹€.

iconv 라이브러리λ₯Ό μ‚΄νŽ΄λ³΄μ‹­μ‹œμ˜€.

μ’‹μ•„μš”... ν•˜μ§€λ§Œ λ°”μ΄λ„ˆλ¦¬κ°€ μž‘λ™ν•œ 이유λ₯Ό μ•„μ‹­λ‹ˆκΉŒ?

μ›μ‹œ 버퍼 λ°μ΄ν„°λ§Œ μ‚¬μš©ν•˜κΈ° λ•Œλ¬Έμž…λ‹ˆλ‹€. λ˜ν•œ λ¬Έμžμ—΄μ€ μ—¬μ „νžˆ ​​utf8이 μ•„λ‹ˆλ―€λ‘œ μˆ˜ν–‰ν•˜μ§€ λ§ˆμ‹­μ‹œμ˜€.

κ·ΈλŸ¬λ‚˜ 이 경우 인코딩에 λŒ€ν•œ μ μ ˆν•œ 값은 λ¬΄μ—‡μž…λ‹ˆκΉŒ?

인코딩이 μ—†μŠ΅λ‹ˆλ‹€. λ²„νΌλ‘œ κ°€μ Έμ˜¨ λ‹€μŒ iconv에 λ„£μŠ΅λ‹ˆλ‹€.

ν˜Όλž€μ€ "λ°”μ΄λ„ˆλ¦¬"와 버퍼(λ°”μ΄λ„ˆλ¦¬μ΄κΈ°λ„ 함)에 μžˆλŠ” κ²ƒμœΌλ‘œ λ³΄μž…λ‹ˆλ‹€.

"λ°”μ΄λ„ˆλ¦¬"λŠ” λŒ€λΆ€λΆ„ μš°λ¦¬κ°€ λͺ¨λ“  λ°”μ΄λ„ˆλ¦¬λ₯Ό λ¬Έμžμ—΄λ‘œ μΈμ½”λ”©ν•œ λ…Έλ“œ 0.1.x일의 λ ˆκ±°μ‹œ μΈμ½”λ”©μž…λ‹ˆλ‹€.

node.js 0.2μ—μ„œλŠ” v8의 νž™ 외뢀에 μ›μ‹œ λ©”λͺ¨λ¦¬ 할당인 Buffer 객체가 μžˆμŠ΅λ‹ˆλ‹€. κ°œμ²΄λŠ” λ¬Έμžμ—΄μ΄ μ•„λ‹ˆλ©° 파일 μ„€λͺ…μžμ—μ„œ κ°€μ Έμ˜¨ μ›μ‹œ 이진 데이터λ₯Ό λ³΄μœ ν•˜κ³  λ¬Έμžμ—΄λ‘œμ˜ λ³€ν™˜μ„ κ²ͺ지 μ•Šκ³  λ‹€λ₯Έ 파일 μ„€λͺ…μžμ—κ²Œ 보낼 수 μžˆμŠ΅λ‹ˆλ‹€.

μš”μ²­ μ‹œ μš”μ²­ 객체λ₯Ό λͺ¨λ“  슀트림으둜 νŒŒμ΄ν”„()ν•  수 있으며 λͺ¨λ“  λ²„νΌλŠ” λŒ€μƒ 슀트림으둜 μ „μ†‘λ©λ‹ˆλ‹€. http μš”μ²­μ—μ„œ λ°”μ΄λ„ˆλ¦¬ 데이터λ₯Ό 가져와 파일, μ†ŒμΌ“ λ˜λŠ” http μ‘λ‹΅μœΌλ‘œ λ³΄λ‚΄λŠ” 것이 전뢀라면 pipe()λ₯Ό μ‚¬μš©ν•΄μ•Ό ν•©λ‹ˆλ‹€.

μš”μ²­ λͺ¨λ“ˆκ³Ό ν•¨κ»˜ νŒŒμ΄ν”„λ₯Ό μ–΄λ–»κ²Œ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆκΉŒ?

@mikeal ꡉμž₯ν•΄ !

λ™μΌν•œ HTTP μš”μ²­(μ›Ή μ•±)μ—μ„œ λ‘˜ μ΄μƒμ˜ URL을 μŠ€ν¬λž©ν•œ λ‹€μŒ μ΄λŸ¬ν•œ λͺ¨λ“  데이터λ₯Ό μ‘λ‹΅μœΌλ‘œ 보내야 ν•©λ‹ˆλ‹€.

λ‹€μŒκ³Ό 같이 보낼 수 μ—†μŠ΅λ‹ˆλ‹€.

request.get({
        uri: url1
}).pipe(res);

request.get({
        uri: ur2
}).pipe(res);

λŒ€μ‹  ν•  μˆ˜μžˆλŠ” λ‹€λ₯Έ 방법이 μžˆμŠ΅λ‹ˆκΉŒ?

var writeStream = fs.createWriteStream('./output');
request.get({
        uri: url1
}).pipe(writeStream);

request.get({
        uri: url2
}).pipe(writeStream);

// after all pipes finish I send writeStream content to the response

?

νŒŒμ΄ν”„μ™€ ν•¨κ»˜ μ‚¬μš©ν•  수 μžˆλŠ” μŠ€νŠΈλ¦Όμ€ λ¬΄μ—‡μž…λ‹ˆκΉŒ?

λͺ¨λ“  μŠ€νŠΈλ¦Όμ„ μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€. :)

HTTP μ„œλ²„ 응닡, 당신은 λ‹€λ₯Έ μš”μ²­ 개체의 본문으둜 μ‚¬μš©ν•  수 μžˆμŠ΅λ‹ˆλ‹€, 당신은 파일 μ“°κΈ° μŠ€νŠΈλ¦Όμ„ μ—΄ 수 μžˆμŠ΅λ‹ˆλ‹€. 아무것 :)

μš”μ²­({url: " www.example.com ", 인코딩: "latin1" }, ν•¨μˆ˜(였λ₯˜, 응닡, HTML) {
console.log('였λ₯˜:', 였λ₯˜);

@vickygill69 κ°μ‚¬ν•©λ‹ˆλ‹€, κ·€ν•˜μ˜ λ‹΅λ³€μœΌλ‘œ λ‚΄ λ¬Έμ œκ°€ ν•΄κ²°λ˜μ—ˆμŠ΅λ‹ˆλ‹€.

인코딩을 null둜 μ„€μ •ν•œ λ‹€μŒ iconv와 ν•¨κ»˜ 응닡 버퍼λ₯Ό μ‚¬μš©ν•˜λ©΄ νš¨κ³Όμ μ΄μ—ˆμŠ΅λ‹ˆλ‹€. 감사 ν•΄μš”!

이 νŽ˜μ΄μ§€κ°€ 도움이 λ˜μ—ˆλ‚˜μš”?
0 / 5 - 0 λ“±κΈ‰