저는 TSV 파일을 받아 처리하고 응답을 출력하는 프로젝트 작업을하고 있습니다. 내 친구이자 나는 Heroku와 Spark를 사용하여 Java 기반 프로그램을 웹 응용 프로그램으로 만듭니다.TSV 파일 처리
현재 우리 웹 응용 프로그램은 특정 .tsv 파일에서만 작동하며 다른 응용 프로그램에서는 작동하지 않으며 .tsv 파일의 특정 인코딩과 관련된 문제라고 생각합니다.
입력 파일은 Google 스프레드 시트 문서에서 생성 된 .tsv 파일이지만 현재 Google 프로그램은 올바르게 구문 분석 할 수 없습니다. 그러나인데, Google 스프레드 시트의 데이터를 복사하여 텍스트 파일에 붙여 넣은 다음 .tsv 파일로 저장하면 프로그램에서 성공적으로 처리 할 수 있습니다. 두 파일의 내용이 동일하고 텍스트 형식이 동일하지만 다른 파일은 작동하지 않으므로 이상하게 보입니다.
이 버튼이 클릭되면 호출 내 같이 sendData() JS 함수이다
public static void main(String[] args)
{
port(getHerokuAssignedPort());
staticFileLocation("/public");
get("/ping", (req, res) -> "pong");
post("/rides", (req, res) -> {
System.out.println("parsing...");
final RawParticipants participants = parser.parseInitialRequest(req.body());
final AssignedRides result = orchestrator.orchestrateRides(participants);
System.out.println(participants);
return result.toString();
});
}
출력 : 그것은 자바를 통해 요청을 입력 받아 판독 여기서
여기function sendData() {
var fr = new FileReader();
fr.onload = function(event) {
var result = event.target.result;
$.post("/rides", result, function(result, error) {
result = result.replace(/\n/g, "<br>");
$(".result").html(result);
});
};
var rides = $("#rides");
var files = rides[0]['files'];
var file = files[0];
fr.readAsText(file, 'ASCII');
}
은 다른 .tsv 파일에 따라 다르지만 Google 스프레드 시트에서 다운로드 한 파일은 모두 올바르게 구문 분석 될 수 없습니다. 프로그램에서 Google 스프레드 시트의 파일에있는 내용을 읽을 수 없거나 일부 줄을 읽을 수는 있지만 다른 줄을 읽을 수는 없습니다. 내 안에는 데이터에 특별한 것이 없다. 일반 텍스트 만 탭으로 구분됩니다. Google 스프레드 시트가 .tsv 파일을 인코딩하는 방법을 살펴 봤는데 복사/붙여 넣기에서 생성 된 .tsv 파일과 동일한 ASCII 인코딩과 다른 특별한 것으로 보이지 않습니다. 그래서 저는이 문제를 해결하는 방법에 대해 약간 혼란 스러울뿐입니다. 특히 똑같은 정보로 .tsv 파일을 입력 할 수 있고 방금 생성 된 프로그램이 성공적으로 읽었을 때 더욱 그렇습니다.
누구나 특정 .tsv 파일을 처리 할 수없는 이유를 알고 있으며 해결책은 무엇입니까? 감사! 필요한 경우 더 많은 정보를 기꺼이 제공 할 것입니다.
req.body() 대신'new String (req.bodyAsBytes(), StandardCharsets.UTF_8)'같은 것을 시도해 보셨습니까? – codefinger
문제가 로컬에서 발생하거나 Heroku에서만 발생합니까? – codefinger
@codefinger 그냥 슬프게도 당신의 제안을 시도했다. 앱에서 여전히 Google 스프레드 시트에서 생성 한 .tsv 파일을 올바르게 구문 분석 할 수 없습니다. 귀하의 두 번째 질문에 관해서는, 나는 당신이 무엇을 의미하는지 확실히 모르겠지만 무엇보다도, 나는 그 문제가 Heroku와 함께 있다고 생각하지 않습니다. 어떻게 든 내 프로그램은 인코딩 때문에 특정 .tsv 파일을 읽을 수 없으며 난 그냥 난처한 상황에 처하게됩니다. 파서가 올바르게 작동하는지 확인하기 위해 단위 테스트를 작성했으며 탭으로 구분 된 텍스트를 성공적으로 파싱합니다. 그러나 Sheets에서 .tsv 파일을 발견하면 그냥 헷갈 리게됩니다. – Aaron