n8n에서 HTTP Request 노드로 euc-kr
인코딩 데이터를 처리하는 방법입니다. 데이터를 파일 형식으로 저장한 뒤 euc-kr
에서 utf-8
로 변환한 결과를 처리할 수 있습니다.
1. HTTP Request 노드 설정
HTTP Request 노드에서 데이터를 받아오는 과정을 설정합니다.
- Method: GET/POST (요구사항에 따라)
- Response Format: Set to
File
. - Output Location: Choose
Binary
(이후 변환 과정을 위해 필요).
이렇게 하면 응답 데이터가 바이너리 형식으로 저장됩니다.
2. JavaScript 노드 추가
JavaScript
노드를 사용해 euc-kr
데이터를 utf-8
로 변환합니다. 이를 위해 Node.js의 iconv-lite
패키지가 필요합니다.
JavaScript 코드
const iconv = require('iconv-lite');
// Binary 데이터를 가져옵니다.
const binaryData = $binary.data;
// EUC-KR 데이터를 Buffer로 변환
const eucKrBuffer = Buffer.from(binaryData, 'binary');
// Buffer 데이터를 UTF-8로 변환
const utf8String = iconv.decode(eucKrBuffer, 'euc-kr');
// 변환된 문자열을 결과로 반환
return {
json: {
convertedData: utf8String,
},
};
3. n8n Custom Docker 이미지 설정
위에서 사용된 iconv-lite
패키지는 기본적으로 n8n Docker 컨테이너에 포함되어 있지 않습니다. 따라서 다음과 같이 커스텀 Docker 이미지를 생성해야 합니다.
Dockerfile
FROM n8nio/n8n
# iconv-lite 설치
RUN npm install iconv-lite
이미지를 빌드한 뒤 n8n을 해당 커스텀 이미지를 사용해 실행합니다.
4. 변환된 데이터 전달
JavaScript
노드의 결과 데이터를 다음 노드로 전달하여 원하는 처리를 수행합니다.
- 데이터를 JSON으로 처리하거나
- 특정 파일 형식으로 저장하거나
- 다른 API로 전달
전체 흐름
- HTTP Request 노드: 바이너리 데이터를 수신.
- JavaScript 노드: 데이터를
euc-kr
에서utf-8
로 변환. - 후속 노드: 변환된 데이터를 원하는 작업(저장, 전달 등)으로 처리.
iconv-lite
외에도 Python을 사용하는 방식을 고려할 수 있습니다. n8n에서 Python Script 노드를 사용하려면 별도의 외부 서버를 호출하거나, Python 실행 가능한 환경을 구성해야 합니다. iconv-lite
모듈이 기본 n8n 환경에 설치되어 있지 않아서 다음 두 가지 방법 중 하나를 선택할 수 있습니다.
방법 1: n8n 커스텀 Docker 이미지 사용
- Dockerfile 생성
아래와 같은 내용을 포함한Dockerfile
을 생성합니다.FROM n8nio/n8n:latest # iconv-lite 설치 RUN npm install iconv-lite
- Docker 이미지 빌드
아래 명령어로 이미지를 빌드합니다.docker build -t n8n-custom .
- n8n 실행
커스텀 이미지를 사용해 n8n을 실행합니다.docker run -it --rm -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8n-custom
이제 iconv-lite
모듈을 사용할 수 있습니다.
방법 2: 외부 변환 서버 사용 (Python 기반)
Node.js 환경에서 직접 패키지를 설치하기 어려운 경우, 변환 작업을 수행할 별도의 Python 서버를 활용하는 방법도 있습니다.
- Python 변환 서버 코드
아래와 같이 Python Flask 서버를 작성합니다.
Flask를 설치하려면 다음 명령어를 실행합니다.from flask import Flask, request, jsonify import codecs app = Flask(__name__) @app.route('/convert', methods=['POST']) def convert(): """EUC-KR 인코딩된 데이터를 UTF-8로 변환하는 API 엔드포인트""" # 데이터 수신 data = request.get_data() # EUC-KR 데이터를 UTF-8로 변환 utf8_data = codecs.decode(data, 'euc-kr') return jsonify({'converted': utf8_data}) if __name__ == '__main__': app.run(host='0.0.0.0', port=5000)
pip install flask
- Python 서버 실행
Python 서버를 실행합니다.python convert_server.py
- n8n HTTP Request 노드 설정
HTTP Request 노드를 사용하여 변환 서버에 데이터를 POST 요청으로 전달합니다.- Method: POST
- URL:
http://<server-ip>:5000/convert
- Body: 바이너리 데이터를 전달.
- 결과 데이터 활용
Python 서버의 응답에서 변환된 UTF-8 데이터를 사용합니다.
방법 3: n8n 외부 CLI 스크립트 호출
n8n에서 Execute Command
노드를 활용해 Node.js 또는 Python 스크립트를 호출하는 방법입니다.
- Node.js 변환 스크립트 작성
다음과 같은 Node.js 스크립트를 작성합니다.const fs = require('fs'); const iconv = require('iconv-lite'); // euc-kr 파일 읽기 const eucKrData = fs.readFileSync('input.txt'); // EUC-KR에서 UTF-8로 변환 const utf8Data = iconv.decode(eucKrData, 'euc-kr'); // 변환된 데이터 출력 console.log(utf8Data);
- n8n에서 Execute Command 노드 설정
- Command:
node convert.js
- Input: HTTP Request 노드의 데이터를 파일로 저장하고 이를 스크립트로 처리.
- Command:
댓글