[javascript] Node.js에서 무언가를 어떻게 인코딩합니까?

이것을 URL 인코딩하고 싶습니다 :

SELECT name FROM user WHERE uid = me() 

이를 위해 모듈을 다운로드해야합니까? 요청 모듈이 이미 있습니다.



답변

JavaScript를 사용할 수 있습니다 encodeURIComponent:

encodeURIComponent('select * from table where i()')


답변

내장 모듈 querystring은 당신이 찾고있는 것입니다 :

var querystring = require("querystring");
var result = querystring.stringify({query: "SELECT name FROM user WHERE uid = me()"});
console.log(result);
#prints 'query=SELECT%20name%20FROM%20user%20WHERE%20uid%20%3D%20me()'


답변

escape기능을 사용하십시오 querystring. URL 안전 문자열을 생성합니다.

var escaped_str = require('querystring').escape('Photo on 30-11-12 at 8.09 AM #2.jpg');
console.log(escaped_str);
// prints 'Photo%20on%2030-11-12%20at%208.09%20AM%20%232.jpg'


답변

URI 인코딩은 쿼리 부분에 적합하지만 도메인에는 적합하지 않습니다. 도메인은 punycode를 사용하여 인코딩됩니다. URI와 IRI (Internationalized Resource Identifier) ​​사이를 변환하려면 URI.js 와 같은 라이브러리가 필요합니다 .

나중에 문자열을 쿼리 문자열로 사용하려는 경우에 올바른 것입니다.

> encodeURIComponent("http://examplé.org/rosé?rosé=rosé")
'http%3A%2F%2Fexampl%C3%A9.org%2Fros%C3%A9%3Fros%C3%A9%3Dros%C3%A9'

당신이 ASCII 문자처럼 원하지 않는 경우 /, :?이스케이프 사용 encodeURI하는 대신 :

> encodeURI("http://examplé.org/rosé?rosé=rosé")
'http://exampl%C3%A9.org/ros%C3%A9?ros%C3%A9=ros%C3%A9'

그러나 다른 사용 사례의 경우 대신 uri-js 가 필요할 수 있습니다 .

> var URI = require("uri-js");
undefined
> URI.serialize(URI.parse("http://examplé.org/rosé?rosé=rosé"))
'http://xn--exampl-gva.org/ros%C3%A9?ros%C3%A9=ros%C3%A9'


답변

encodeURIComponent (string)이 수행합니다.

encodeURIComponent("Robert'); DROP TABLE Students;--")
//>> "Robert')%3B%20DROP%20TABLE%20Students%3B--"

쿼리 문자열에서 SQL을 전달하는 것은 좋은 계획이 아닐 수도 있습니다.

이거 봐


답변