
매우 이상한 상황이 발생하고 있습니다.
(Windows 7 Enterprise, SP1, 64비트 실행)
제가 직장에서 사용하는 GUI(이 목적을 위해 특별히 제작되었으며 Windows 환경에서 실행되도록 의도됨)는 .dat 파일을 생성합니다. 사용하기 전에 약간 수정이 필요합니다. 일반 메모장에서 열고 편집한 후 저장합니다(모든 것이 괜찮아 보입니다). 어떤 프로그램(Notepad, Notepad++ 등)으로 다시 열면 모든 "새 줄"/"입력"/줄 바꿈이 제거되었습니다. 모든 것이 하나의 긴 줄로 뒤죽박죽된 것처럼 보입니다.
단순히 열었다가 저장하지 않고 메모장에서 닫으면 아무 것도 바뀌지 않고 줄 바꿈이 있어야 할 위치에 있습니다. Notepad++ 또는 다른 프로그램에서 문서를 열고 저장해도 줄바꿈에 영향을 주지 않습니다. 내용을 Notepad++에 복사했다가 다시 메모장으로 복사하면 이 문제가 해결됩니다. 이후에 메모장에 저장할 때 줄바꿈이 확장되지 않습니다.
이것을 더욱 어색한 문제로 만드는 것은 이 동작이 내 GUI가 생성하는 모든 .dat 파일에 적용되지 않는다는 것입니다. 그 중 일부입니다.
현재 상황과 해결 방법에 대한 좋은 아이디어가 있습니까?
이에 대한 해결책이 내 GUI가 파일을 생성하는 방식을 수정하는 것이라면 GUI는 버그 보고서를 제출할 수 있는 것이므로 허용되는 대답입니다.
하지만... 제 상사가 이전에 이런 문제를 겪은 적이 없고 동일한 버전의 GUI와 메모장을 사용하여 파일을 약간 수정했기 때문에 그럴 가능성은 거의 없습니다. 나는 또한 최근에 이런 일이 일관되지 않게 발생했습니다. 이전에 이 문제가 있었던 파일은 현재 파일 반복에서 메모장으로 저장할 때 줄 바꿈이 풀리지 않습니다.
편집: 추가 정보: 파일을 상사에게 보냈고 상사에게 파일을 열어서 그의 컴퓨터에 있는 메모장으로 저장하게 했는데 아무 일도 일어나지 않았습니다. 저장하고 닫고 다시 연 후에도 모든 줄 바꿈이 남아 있었습니다. 전송 과정에서 파일의 문제가 해결되었거나 내 컴퓨터에 이상한 문제가 발생했습니다.
저장된 파일과 저장되지 않은 파일의 16진수 보기: 내가 알 수 있는 한, 저장되지 않은 버전은 줄 사이에 0D0A가 있고 저장된 버전에는 맨 끝의 단일 인스턴스를 제외하고 모든 0D0A 인스턴스가 누락되어 있습니다. 파일이 열리거나 변환될 때 Notepad++에 의해 추가됨).
다시 편집: 민감한 정보를 편집한 후 "저장되지 않은" 파일의 16진수 버전:
2320504C4541534520434845434B3A20
544845524D5F43617020616E64204465
70436170206265666F72652072756E6E
696E67202121210D0D0A0D0D0A706172
616D20696E697469616C203A3D20313B
0D0D0A706172616D2054203A3D313735
32303B0D0D0A706172616D206474203A
3D20333630303B0D0D0A0D0D0A706172
616D204950505F4F524F203A3D20302E
313233343B0D0D0A706172616D205448
45524D5F4F524F203A3D20302E313233
343B0D0D0A706172616D20544845524D
5F436170203A3D2031323334353B0D0D
0A706172616D20446570436170203A3D
31323334353B0D0D0A234D572C204465
70656E6461626C652043617061636974
79206F662073747566660D0D0A090909
234E756D6265727320666F7220726566
6572656E63653A207468696E67732E0D
0D0A09090923446570656E6461626C65
204361703A2073747566660D0D0A7061
72616D20425546464552203A3D20303B
0D0D0A706172616D20636F6E76657274
203A3D20312E303B0D0D0A0D0D0A7061
72616D09525245534E504F494E545309
3A3D20353B0D0D0A706172616D095252
4553424B50093A3D0D0D0A31092D3132
33343530200D0D0A32092D3132333435
3030200D0D0A330930200D0D0A340931
32333435200D0D0A3509313233343520
0D0D0A3B0D0D0A0D0D0A706172616D09
525245534C4F5045093A3D0D0D0A3109
2D3132333435452D30350D0D0A32092D
3132333435452D30350D0D0A33092D31
32333435452D30350D0D0A3409313233
34350D0D0A3B0D0D0A0D0D0A2357696E
64792073747566660D0D0A706172616D
2057494E445F49433A3D0D0D0A706C61
63650931323334350D0D0A3B0D0D0A0D
0D0A706172616D207468696E67793A3D
0D0D0A706C6163650931323334350D0D
0A3B0D0D0A0D0D0A706172616D204F50
545F5265733A3D0D0D0A7468696E6709
300D0D0A3B0D0D0A0D0A
메모장에 저장하고 다시 연 후의 16진수 코드는 다음과 같습니다.
2320504C4541534520434845434B3A20
544845524D5F43617020616E64204465
70436170206265666F72652072756E6E
696E6720212121706172616D20696E69
7469616C203A3D20313B706172616D20
54203A3D31373532303B706172616D20
6474203A3D20333630303B706172616D
204950505F4F524F203A3D20302E3132
33343B706172616D20544845524D5F4F
524F203A3D20302E313233343B706172
616D20544845524D5F436170203A3D20
31323334353B09706172616D20446570
436170203A3D383632362E313B234D57
2C20446570656E6461626C6520436170
6163697479206F662073747566660909
09234E756D6265727320666F72207265
666572656E63653A207468696E677309
090923446570656E6461626C65204361
703A207374756666706172616D204255
46464552203A3D20303B706172616D20
636F6E76657274203A3D20312E303B70
6172616D09525245534E504F494E5453
093A3D20353B706172616D0952524553
424B50093A3D31092D31323334353020
32092D31323334353030203309302034
0931323334352035093132333435203B
706172616D09525245534C4F5045093A
3D31092D3132333435452D303532092D
3132333435452D303533092D31323334
35452D303534092D3132333435452D30
353B2357696E64792073747566667061
72616D2057494E445F49433A3D706C61
63650931323334353B706172616D2074
68696E67793A3D706C61636509313233
34353B706172616D204F50545F526573
3A3D7468696E6709303B0D0A
답변1
일부 배경 지식이 도움이 될 수 있습니다. 메모장은 <CR><LF>
줄 끝인지 확인하고 줄 바꿈을 수행하기 위해 두 가지를 모두 포함하는 파일이 필요합니다 . 이러한 문자 중 하나라도 누락되면 해당 문자를 건너뛰고 모든 내용을 한 줄에 표시합니다. <CR><LF>
는 DOS/Windows 시스템의 표준 줄 바꿈 시퀀스인 반면 Unix/Linux 및 파생 제품은 <LF>
줄 바꿈으로 사용됩니다. 열려는 파일에는 해당 파일만 <LF>
들어 있을 가능성이 높으므로 메모장에서는 해당 파일을 올바르게 표시할 수 없습니다.
이러한 파일은 텍스트 형식 지정에 대한 Windows/DOS 규칙을 따르지 않는 프로그램에 의해 생성되었을 가능성이 높습니다. 이것이 Windows에서만 실행되도록 의도된 것이라면 특히 파일을 메모장에서 편집해야 하는 경우 버그 보고서가 필요하다고 생각합니다.
그동안은 Notepad++에서만 파일을 열고 편집하는 것이 좋습니다.
문제를 디버깅하려면 16진수 편집기를 다운로드하여 줄 끝에 무엇이 포함되어 있는지 확인하세요. 적절한 창 형식을 지정하려면 16진수 코드 0d 0a가 포함되어야 합니다. 둘 중 하나라도 없거나 순서가 다른 경우 문제가 발생합니다. 메모장에서 저장한 적이 없는 새 파일과 저장한 파일에 이 방법을 시도해 보세요.