Notepad++ วิธีรักษา CRLF เมื่อทำการบันทึก

ฉันมีไฟล์ PHP ที่ฉันต้องทำการเปลี่ยนแปลงข้อความง่ายๆ ฉันใช้ FTP เพื่อคัดลอกจากเซิร์ฟเวอร์ linux ไปยังเครื่อง Win7 ของฉัน ฉันเปิดมันด้วย notepad++ เปิด -view-show symbol-view all character- และฉันสามารถเห็น CRLF และ CR ก่อนและหลังแต่ละบรรทัด แต่หากฉันบันทึกไฟล์และเปิดไฟล์อีกครั้งใน Notepad++ CRLF ทั้งหมดจะถูกแทนที่ด้วย CR

ฉันจะปล่อยให้ CRLF เหล่านี้เหมือนเดิมเมื่อทำการบันทึกได้อย่างไร

ฉันใช้ Notepad++ 5.9.6.2

การเข้ารหัสถูกตั้งค่าเป็น ANSI ไฟล์สามารถเข้ารหัสในรูปแบบอื่นได้จริงหรือไม่ และนี่คือสาเหตุที่ทำให้ข้อมูลถูกลอกออก


person DVDmmike    schedule 22.01.2014    source แหล่งที่มา
comment
การเข้ารหัสสำหรับไฟล์ PHP คืออะไร?   -  person Pankaj Jaju    schedule 22.01.2014


คำตอบ (1)


โดยปกติ Notepad++ จะตรวจจับรูปแบบ EOL เมื่อคุณเปิดไฟล์ และจะเก็บรูปแบบนั้นไว้แม้ว่าคุณจะบันทึกไฟล์ก็ตาม เมื่อคุณเปิดไฟล์เหล่านั้นเป็นครั้งแรก ให้ไปที่ Edit>EOL Conversion และดูว่าตัวเลือกใดเป็นสีเทา นั่นจะเป็นรูปแบบการสิ้นสุดบรรทัดปัจจุบันที่ใช้ในไฟล์ และหากคุณต้องการใช้รูปแบบอื่นจากรายการ คุณสามารถเลือกได้จากที่นั่น อาจเป็นไปได้ว่าไฟล์ของคุณมีการลงท้ายบรรทัดแบบผสม ซึ่งในกรณีนี้ NPP อาจจะทำให้การลงท้ายบรรทัดเป็นมาตรฐานตามที่คิดว่าเหมาะสมสำหรับไฟล์เมื่อคุณบันทึก

นอกจากนี้ CR เป็นรูปแบบ Mac แบบเก่า ซึ่งหมายความว่าคุณมีบางอย่างรบกวนไฟล์ของคุณ คุณตั้งค่ารูปแบบเองโดยไม่ตั้งใจ หรือคุณใช้คำศัพท์ในทางที่ผิด CR=การขึ้นบรรทัดใหม่=\r, LF=การป้อนบรรทัด=\n; Windows ใช้ CRLF (\r\n), *nix และ OSX ใช้เพียง LF (\n) และตามที่ระบุไว้ MacOS ใช้เพียง CR (\r)

person JAB    schedule 22.01.2014
comment
นอกจากนี้ เซิร์ฟเวอร์ FTP และไคลเอนต์สามารถกำหนดค่าให้เปลี่ยนการป้อนบรรทัดได้ทันที - person Álvaro González; 22.01.2014
comment
ฉันใช้ FileZilla v3.7.3 สำหรับ FTP มีการตั้งค่าใน filezilla เพื่อรักษาการยกเลิกบรรทัดต้นฉบับหรือไม่ - person DVDmmike; 22.01.2014
comment
@ ÁlvaroG.Vicario ในขณะที่เป็นจริง (และคุณสมบัติที่มีประโยชน์ใน GIT และอาจเป็นเซิร์ฟเวอร์ / ไคลเอนต์ที่เก็บซอร์สโค้ดอื่น ๆ เช่นกัน) ฉันคิดว่ามันจะไม่เกิดขึ้นหลังจากดาวน์โหลดไฟล์จากเซิร์ฟเวอร์ FTP แล้ว เนื่องจาก Notepad ++ เป็น โปรแกรม Windows และดังนั้นฉันจึงถือว่าการเปิดและการบันทึกเสร็จสิ้นบนเครื่อง Win7 (ไม่ใช่ว่าบางคนไม่สามารถใช้มันบน Linux ผ่าน WINE หรืออะไรทำนองนั้น แต่มีโปรแกรมแก้ไขข้อความ *nix ที่มีคุณสมบัติมากมายอยู่แล้วดังนั้นจึงมี ไม่มีเหตุผลที่จะใช้ NPP บนเครื่องดังกล่าว) - person JAB; 22.01.2014
comment
@ user3223999 - สำหรับการทดสอบอย่างรวดเร็ว ให้ไปที่ Transfer/ Transfer type และเลือก Binary มีการตั้งค่าทั่วไปที่ตั้งค่าเริ่มต้นไว้ - person Álvaro González; 22.01.2014
comment
โปรแกรมเมอร์ที่เขียนโค้ดไม่สามารถใช้งานได้ในปัจจุบัน ดังนั้นฉันจึงไม่สามารถพูดได้ว่าทำไมมันถึงถูกเข้ารหัสเพื่อให้มีทั้ง CRLF และ CR มันเป็นโค้ด PHP ajax ฉันจะแสดงภาพหน้าจอของโค้ดบางส่วนหากทำได้ แต่เมื่อฉันแก้ไขใน Notepad++ มันคิดว่ามันเป็น EOL Mac (อย่างที่สงสัย) แต่ฉันรู้ว่าโปรแกรมเมอร์นี้ใช้ไม่ได้กับ Mac เพิ่มส่วนท้ายของโค้ดแต่ละบรรทัด มี ;CR บรรทัดถัดไปจะเริ่มต้นเสมอ และมีเพียง CRLF จากนั้นบรรทัดถัดไปเป็นเพียง CR - person DVDmmike; 22.01.2014
comment
หากฉันถ่ายโอนไบนารี่จากเซิร์ฟเวอร์ไปยังเครื่อง win 7 ของฉัน ให้เปิดเป็น ++ จากนั้น EOL จะบอกว่ามันเป็นไฟล์ windows และมันก็ดูเป็นเรื่องปกติสำหรับฉัน ทุกบรรทัดจะมีเฉพาะ CRLF ต่อท้ายเมื่อดูใน ++ - person DVDmmike; 22.01.2014
comment
@ user3223999 ซึ่งนั่นหมายความว่า FileZilla กำลังแปลง CRLF เป็น CRCRLFCR เมื่อถ่ายโอนเป็นข้อความด้วยเหตุผลบางประการ ซึ่งไม่ตรงกับรูปแบบ EOL ใด ๆ ที่ฉันรู้จัก (โดยเฉพาะอย่างยิ่งหากมีการเพิ่มอัฒภาคด้วย) บางที FileZilla อาจวิเคราะห์บรรทัดใหม่ไม่ถูกต้องและสันนิษฐานว่าหากไฟล์ข้อความมาจากเครื่อง Linux ไฟล์นั้นจะมีจุดสิ้นสุดของบรรทัด LF ดังนั้นจึงเติม CR ไว้ข้างหน้ากับการสิ้นสุดบรรทัดใดๆ ที่พบเมื่อถ่ายโอนไปยังเครื่อง Windows แม้ว่าการสิ้นสุดบรรทัดนั้นจะเป็น CR หรือ LF โดยมี CR อยู่ข้างหน้า? - person JAB; 22.01.2014
comment
พอมาคิดดูแล้ว ดูเหมือนจำได้ว่าเคยเจอปัญหาคล้าย ๆ กับที่เล่าไปเมื่อก่อน แต่จำไม่ได้ว่าใช้กับโปรแกรมอะไร... - person JAB; 22.01.2014
comment
Filezilla ถูกตั้งค่าให้ถ่ายโอนอัตโนมัติ ฉันถ่ายโอนไบนารี่ แก้ไขข้อความในแผ่นจดบันทึก ++ โอนกลับเป็นไบนารี่และทดสอบโค้ดและดูเหมือนว่าจะทำงานได้ดี เมื่อผมทำขั้นตอนนี้มาก่อน โค้ดใช้งานไม่ได้ ดังนั้นการถ่ายโอนไฟล์จาก Filezilla ดูเหมือนจะทำให้เกิดปัญหา - person DVDmmike; 22.01.2014
comment
@ user3223999 และนี่คือเหตุผลว่าทำไม wiki.filezilla-project.org/Data_Type#Note ดังนั้น คุณจะต้อง ให้ใช้โหมดไบนารี่ต่อไป หรือคุณต้องบอกบุคคลที่คุณทำงานด้วยให้หยุดใช้ CR+LF บนเซิร์ฟเวอร์ Linux/ไม่ถ่ายโอนไฟล์ไปยังเซิร์ฟเวอร์ในโหมดไบนารี่ - person JAB; 22.01.2014