2013-07-08 5 views
3

는 다음 코드를 트리거 확장 기능의 버튼이 있습니다. 불행히도, 그것은 개행 문자를 제거하는 것으로 보인다.보존 줄 바꿈 문자 : 텍스트 URI

utf-8 및 encodeUri() 기능을 포함한 다른 인코딩 방법을 시도했습니다. 또한 mimetype을 data:text/plain으로 바꾸려고 시도했지만 다운로드하는 대신 정확한 줄 바꿈 문자가있는 새 탭에서 열립니다.

개행 문자가 보존되도록 내 텍스트를 인코딩하는 방법이 있습니까? 그렇지 않은 경우 브라우저에서 파일 다운로드를 트리거하는 다른 방법이 있습니까?

편집

나는 줄 바꿈은 텍스트 편집기에 나타나지 않는 것을 발견했다. 이전에는 크롬에서 개행 문자를 인식하지 못하는 메모장을 사용했지만 다른 텍스트 편집기 (메모장 ++)는 문자를 인식하는 것으로 보입니다

답변

5

내 권장 솔루션은 비 메모장을 인식하지 않기 때문에 메모장을 사용하지 않는 것입니다. Windows 회선 형식. 출력과 함께 메모장을 계속 사용하려면 캐리지 리턴 + 줄 바꿈 (0x0D 0x0A)이 포함 된 모든 줄 바꿈 (0x0A)을 사용하십시오. base64로 암호화하지 않고 데이터 URI에 줄 바꿈 문자를 유지하려고하는 모든 사람에 대한

chrome.tabs.create({ 
    url: 'data:text;base64,' + btoa(data.replace(/\n/g, '\r\n')), 
    active: false 
}); 
+0

나는 \ r에 대해 잊어 버린 것을 믿을 수 없습니다. 감사! – MrGlass

-1

: 수 없습니다, 당신은 base64 인코딩을 사용해야합니다.

+1

이 대답은 틀립니다. URL 인코딩 된 URL을 통해 base64 인코딩없이 줄 바꿈 문자를 사용할 수 있습니다. 예 :'data : text/html,

a%0A%0Db
' –

+0

또한 base64는 암호화가 아닌 인코딩입니다. – MrGlass

+0

사실, 이것은 정답입니다. 질문은 text/plain에 관한 것이지 text/html에 관한 것이 아닙니다. text/plain은 개행 문자를 지원하지 않으므로 base64로 인코딩해야합니다. – CpnCrunch