Yêu cầu thg 8 29, 2017 4:11 CH 597 0 1
  • 597 0 1
0

LÀM THẾ NÀO GIẢI MÃ TIẾNG TRUNG QUỐC (CHINESE CHARACTER) TRONG SERVER NODEJS?

Chia sẻ
  • 597 0 1

Hello cộng đồng VIBLO! Mình là Tú Nguyễn, hôm nay mình có một vấn đề về giải mã ngôn ngữ Trung Quốc (Chinese Character). Mình không nói nhiều nữa, mình vào vấn đề luôn, mong mọi người giúp thằng em này nhé!

Mình lấy dữ liệu trên website Trung Quốc và lưu vào biến, sau đó mình lấy biến chứa dữ liệu tiếng Trung Quốc mình đưa vào module google-translate trong npm để dịch sang tiếng Việt. Nhưng mình gặp vấn đề là khi lưu dữ liệu vào biến thì server nó không hiểu tiếng Trung Quốc để dịch. Điều nhận biết dễ nhất là mình xuất biết đó ra bằng console.log(var) như hình dưới

Và mình cũng sử dụng dữ liệu này đề lưu vào file txt

fs.writeFile('output.json', JSON.stringify(json, null, 4), 'utf-8', function(err){
    console.log('File successfully written! - Check your project directory for the output.json file' + name);
})

Và code cũng không mã hóa ra được tiếng Trung Quốc. Như file https://nodejs.vn/uploads/files/1504022654750-output.json

Mong các bác giúp đỡ thằng em này, làm sao có thể dịch tiếng Trung sang tiếng Việt và lưu chúng vào file txt được

  • Thanks cả nhà!!
Avatar Tran Duc Thang @thangtd90
thg 8 30, 2017 1:08 SA

@qaqeqe0 Bạn có lẽ đang gặp vấn đề về encoding. Bạn có thể nói rõ xem website Trung Quốc mà bạn đang lấy dữ liệu là trang nào, và bạn đang dùng đoạn code như thế nào để lấy dữ liệu được không?

Avatar Tu Nguyen @qaqeqe0
thg 8 30, 2017 6:26 SA

Hello anh @Thang-Tran-Duc Đây là code của mình, anh xem dùm em nhé!

var request = require('request');
var cheerio = require('cheerio');

app.get('/', function(req, res){
  var url = 'https://world.tmall.com/item/546137715959.htm';

  request(url, function(error, response, html){
    if(!error){
      var $ = cheerio.load(html);

      var title, item;
      var color = [];
      var size = [];
      var attribute = [];
      var json = { item : "", title : "", color : "", size : "" };

      $('.tb-detail-hd').filter(function(){
        var data = $(this);
        title = data.children().first().text().trim();
        json.title = title;
      })

      $('#J_attrBrandName').next().filter(function(){
        var data = $(this);
        item = data.attr('title').trim();
        json.item = item;
      })

      $('#J_AttrUL').children('li').filter(function(){
        var data = $(this);
        attribute.push(data.text().trim());
        json.attribute = attribute;
      })

      $('.tb-sku').filter(function(){
        var data = $(this);
        data.children().first().children('dd').children('ul').children('li').filter(function(){
        	var data2 = $(this);
        	size.push(data2.children('a').text().trim());
        });

        data.children().first().next().children('dd').children('ul').children('li').filter(function(){
        	var data2 = $(this);
        	color.push(data2.children('a').text().trim());
        });
        json.size = size;
        json.color = color;
      })
    }

    fs.writeFile('output.json', JSON.stringify(json, null, 4), 'utf-8', function(err){
      console.log('File successfully written! - Check your project directory for the output.json file');
    })

    res.send('Check your console!');
  });
});

Mục đích của em là khi em lấy dữ liệu về về em thêm vào google translate module để dịch sang Tiếng Việt và lưu ra file .txt. Ở bên trong code trên là em lưu file json để nhìn rõ dữ liệu.

Anh giúp em một vé nhé. Thanks anh nhiều

Avatar Tu Nguyen @qaqeqe0
thg 8 30, 2017 6:28 SA

A, em cũng bật mí với anh luôn là trong console.log em thử với Tiếng Việt thì cũng bị lỗi font. Em đang suy toán chắc là do máy tính của em. Không biết có phải vậy không nữa. Thanks anh!

1 CÂU TRẢ LỜI


Đã trả lời thg 8 30, 2017 1:26 SA
Đã được chấp nhận
0

Mình đã thử window prompt củ chuối và cũng bó tay 😸 Bạn dùng trình terminal cmder (http://cmder.net) để thay thế nhé

Chia sẻ
Avatar Tu Nguyen @qaqeqe0
thg 8 30, 2017 6:27 SA

Hello anh @Tran-Duy-Khanh Em cảm ơn anh nhiều, để em tải về xem thử 😃

Viblo
Hãy đăng ký một tài khoản Viblo để nhận được nhiều bài viết thú vị hơn.
Đăng kí