본문 바로가기
프로그램 (PHP,Python)

EUC-KR 인코딩 웹사이트를 UTF-8로 자동 변환하는 n8n 워크플로우

by 날으는물고기 2025. 4. 15.

EUC-KR 인코딩 웹사이트를 UTF-8로 자동 변환하는 n8n 워크플로우

728x90

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로 전달

전체 흐름

  1. HTTP Request 노드: 바이너리 데이터를 수신.
  2. JavaScript 노드: 데이터를 euc-kr에서 utf-8로 변환.
  3. 후속 노드: 변환된 데이터를 원하는 작업(저장, 전달 등)으로 처리.

iconv-lite 외에도 Python을 사용하는 방식을 고려할 수 있습니다. n8n에서 Python Script 노드를 사용하려면 별도의 외부 서버를 호출하거나, Python 실행 가능한 환경을 구성해야 합니다. iconv-lite 모듈이 기본 n8n 환경에 설치되어 있지 않아서 다음 두 가지 방법 중 하나를 선택할 수 있습니다.

방법 1: n8n 커스텀 Docker 이미지 사용

  1. Dockerfile 생성
    아래와 같은 내용을 포함한 Dockerfile을 생성합니다.
    FROM n8nio/n8n:latest
    # iconv-lite 설치
    RUN npm install iconv-lite
  2. Docker 이미지 빌드
    아래 명령어로 이미지를 빌드합니다.
    docker build -t n8n-custom .
  3. n8n 실행
    커스텀 이미지를 사용해 n8n을 실행합니다.
    docker run -it --rm -p 5678:5678 -v ~/.n8n:/home/node/.n8n n8n-custom

이제 iconv-lite 모듈을 사용할 수 있습니다.

방법 2: 외부 변환 서버 사용 (Python 기반)

Node.js 환경에서 직접 패키지를 설치하기 어려운 경우, 변환 작업을 수행할 별도의 Python 서버를 활용하는 방법도 있습니다.

  1. Python 변환 서버 코드
    아래와 같이 Python 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)
    Flask를 설치하려면 다음 명령어를 실행합니다.
    pip install flask
  2. Python 서버 실행
    Python 서버를 실행합니다.
    python convert_server.py
  3. n8n HTTP Request 노드 설정
    HTTP Request 노드를 사용하여 변환 서버에 데이터를 POST 요청으로 전달합니다.
    • Method: POST
    • URL: http://<server-ip>:5000/convert
    • Body: 바이너리 데이터를 전달.
  4. 결과 데이터 활용
    Python 서버의 응답에서 변환된 UTF-8 데이터를 사용합니다.

방법 3: n8n 외부 CLI 스크립트 호출

n8n에서 Execute Command 노드를 활용해 Node.js 또는 Python 스크립트를 호출하는 방법입니다.

  1. 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);
  2. n8n에서 Execute Command 노드 설정
    • Command: node convert.js
    • Input: HTTP Request 노드의 데이터를 파일로 저장하고 이를 스크립트로 처리.
728x90
그리드형

댓글