27 คะแนน โดย 0126kjw 2025-01-08 | 17 ความคิดเห็น | แชร์ทาง WhatsApp

ผมได้สร้างเครื่องมือสำหรับแก้ปัญหาความเข้ากันได้ของชื่อไฟล์ภาษาเกาหลีกับ Windows ซึ่งผู้ใช้ macOS หลายคนน่าจะเคยเจอสักครั้ง

สถานการณ์ของปัญหา

ชื่อไฟล์ภาษาเกาหลีที่สร้างบน macOS จะเกิดอาการตัวอักษรถูกแยกส่วนและแสดงเพี้ยนเมื่อเปิดบน Windows
ก่อนหน้านี้มีวิธีแก้โดยใช้ Automator ร่วมกับ convmv เป็นต้น แต่ก็มีความไม่สะดวกหลายอย่าง เช่น การตั้งค่าเริ่มต้นที่ค่อนข้างยาก

วิธีแก้ไข

  • พัฒนาเป็นแอปที่ทำงานค้างอยู่บนแถบเมนู จึงเรียกใช้ได้ทันทีเมื่อจำเป็น
  • ลากและวางไฟล์ลงบนไอคอนแล้วระบบจะแปลงให้อัตโนมัติ
  • ไม่ต้องตั้งค่าเพิ่มเติมหรือใช้งานผ่านเทอร์มินัล

เทคโนโลยีที่ใช้

  • แอปแถบเมนูที่พัฒนาด้วย SwiftUI
  • เขียนด้วย Swift ล้วน ทำให้สภาพแวดล้อมการทำงานเบา
  • ไม่มีการพึ่งพาไลบรารีภายนอก

การคุ้มครองความเป็นส่วนตัว

  • การแปลงชื่อไฟล์ทั้งหมดทำบนคอมพิวเตอร์ของผู้ใช้เท่านั้น
  • ไม่มีการสื่อสารกับเซิร์ฟเวอร์ภายนอกเลย จึงไม่มีความเสี่ยงที่ข้อมูลไฟล์จะรั่วไหลออกไปภายนอก
  • ไม่มีการแก้ไขเนื้อหาหรือเมทาดาทาของไฟล์แต่อย่างใด โดยจะแปลงเฉพาะชื่อไฟล์เท่านั้น

[ลิงก์]

GitHub: https://github.com/0126kjw/FileNic


สวัสดีครับ ปกติผมมักเข้ามาอ่านเงียบ ๆ มาตลอด แต่ครั้งนี้สมัครสมาชิกและลองเขียนโพสต์ครั้งแรกเพื่ออยากมาแชร์ให้ทุกคนครับ

ระหว่างการส่งไฟล์กันทางอีเมลในการทำงาน ผมได้รับฟีดแบ็กหลายครั้งว่าชื่อไฟล์แสดงผลเพี้ยน

เลยคิดว่ามาแก้เรื่องนี้ให้ได้แบบง่ายที่สุดกันเถอะ! จึงขอแชร์เครื่องมือตัวที่ผมทำไว้ใช้เองเป็นการส่วนตัวครับ

ขอฝากความคิดเห็นและฟีดแบ็กจากทุกท่านด้วยครับ!

17 ความคิดเห็น

 
0126kjw 2025-01-25

สวัสดีครับ! มีข่าวดีเลยมาเขียนคอมเมนต์ไว้ครับ ฮ่าๆ

ตอนนี้สามารถดาวน์โหลดผ่าน App Store ได้แล้วครับ!

https://apple.co/3E7rWid

ขอบคุณครับ ฮ่าๆ

 
0126kjw 2025-01-15

ณ วันที่ 15 มกราคม การลงนามแอปและกระบวนการรับรองเสร็จสมบูรณ์แล้ว ทำให้ตอนนี้สามารถรันแอปได้โดยไม่มีประเด็นด้านความปลอดภัย! 🎉
นอกจากนี้ ใน v1.0.5 มีแผนจะเพิ่มฟีเจอร์แปลงโฟลเดอร์ โดยได้เพิ่มฟีเจอร์และการตั้งค่าให้สามารถแปลงไฟล์ย่อยภายในโฟลเดอร์ได้ทั้งหมดในครั้งเดียว พร้อมทั้งแก้ไขบั๊กจุกจิกต่าง ๆ แล้วด้วย จึงขอฝากติดตามกันด้วยนะครับ🙏
เพิ่มเติมคือ ในอนาคตจะพยายามรองรับการแจกจ่ายผ่าน HomeBrew และ AppStore ด้วย
ขอขอบคุณทุกท่านมาก ๆ สำหรับฟีดแบ็ก 😊

 
wedding 2025-01-12

ทำไมถึงเกิดการแยกจาโม และทำไม Apple ถึงไม่แก้ปัญหานี้กันนะ? สงสัยจริง ๆ

 
0126kjw 2025-01-15

นอกจากนี้ ความแตกต่างของวิธีการทำ Unicode normalization ก็ส่งผลต่อผู้ใช้ในหลากหลายภาษาเช่นกัน โดยเฉพาะผู้ใช้ภาษาอย่างเยอรมัน ฝรั่งเศส และสเปน ที่ใช้เครื่องหมายกำกับเสียง (diacritics) ก็ทราบมาว่ากำลังประสบปัญหาคล้ายกันเช่นกัน

คาดกันว่าเหตุผลที่ Apple และ Microsoft ยังคงยึดใช้วิธี normalization ที่แตกต่างกัน น่าจะมาจากข้อจำกัดทางเทคนิคหลายประการ เช่น ความเข้ากันได้กับระบบเดิมและการรองรับย้อนหลัง หากจะแก้ปัญหานี้อย่างเป็นระบบก็คงต้องอาศัยการเปลี่ยนแปลงในระดับรากฐานของทั้งสองระบบปฏิบัติการ ซึ่งอาจส่งผลกระทบอย่างมากต่อระบบที่มีอยู่เดิม จึงดูเป็นปัญหาที่แก้ได้ยาก

 
0126kjw 2025-01-15

ปัญหานี้เกิดจากความแตกต่างของวิธีการทำ Unicode normalization ที่ macOS และ Windows เลือกใช้

ใน Unicode มีวิธีหลักอยู่ 2 แบบในการจัดเก็บอักษรเกาหลี

  • NFC (Normalization Form Canonical Composition): รวมตัวอักษรย่อยแล้วเก็บเป็นอักขระที่ประกอบสมบูรณ์หนึ่งตัว
  • NFD (Normalization Form Canonical Decomposition): แยกตัวอักษรย่อยแล้วเก็บทีละตัว

Windows ใช้วิธีแบบ NFC จึงเก็บ 'annyeong' เป็นอักขระที่ประกอบสมบูรณ์หนึ่งชุด ขณะที่ macOS ใช้วิธีแบบ NFD โดยเก็บ 'ieung', 'a', 'nieun', 'nieun', 'yeo', 'ieung' แยกออกจากกันทีละตัว ปรากฏการณ์ที่เมื่อเปิดไฟล์ที่สร้างบน macOS ใน Windows แล้วตัวอักษรถูกแยกเป็นส่วน ๆ จึงเกิดจากความแตกต่างของวิธีการจัดเก็บนี้

FileNic รองรับการแปลงความแตกต่างนี้ให้ผู้ใช้ได้อย่างง่ายดาย เพื่อให้แสดงผลได้ถูกต้องบนทั้งสองระบบปฏิบัติการ

 
godrm 2025-01-10

คนที่แชร์ไฟล์ข้ามแพลตฟอร์มบ่อย ๆ น่าจะต้องใช้ครับ
ไม่ทราบว่าคุณได้ลงทะเบียนเป็นนักพัฒนาไว้หรือยังครับ? ตอนแจกจ่าย ถ้า archive ใน Xcode แล้ว export ตัวที่ archive ไว้ในรูปแบบ Direct Distribution ก็จะทำ notarizing ผ่าน Apple Developer Portal ให้ครับ จากนั้นจะยืนยันสิทธิ์แบบเดียวกับการแจกจ่ายผ่าน App Store ทำให้สามารถรันได้ทันที น่าจะช่วยให้การแจกจ่ายและการรันแอปสะดวกขึ้นถ้าอ้างอิงเอกสารนี้ https://developer.apple.com/documentation/Security/…

 
0126kjw 2025-01-15

สวัสดีครับ/ค่ะ! ขอบคุณสำหรับข้อมูลดี ๆ เพื่อให้เผยแพร่ได้อย่างราบรื่น ได้ดำเนินขั้นตอนการลงนามและการรับรองเรียบร้อยแล้ว และตอนนี้ได้จัดการให้สามารถใช้งานได้อย่างสะดวกโดยไม่มีข้อผิดพลาดในการเปิดใช้งานหรือปัญหาด้านความปลอดภัย ขอบคุณครับ/ค่ะ

 
findnamo 2025-01-09

ผมเคยทำฟังก์ชันแบบเดียวกันนี้ไว้เมื่อเดือนตุลาคม 2020 เลยขอเอามาแชร์ครับ

ตอนเปิดใช้งานครั้งแรก กรุณากด control แล้วคลิกเปิด

 
0126kjw 2025-01-15

ผมก็ใช้งาน Contact ได้ดีมากเหมือนกันครับ! ขอบคุณสำหรับคอมเมนต์นะครับ ฮ่าๆ

 
dukjin 2025-01-10

ผมใช้อยู่ดีมากครับ 555 ตอนนี้ก็ยังอยู่บนแถบเมนูของผมครับ

 
draupnir 2025-01-08

จำได้ว่าในยุคเริ่มต้นของคลาวด์สตอเรจ Dropbox แก้ปัญหาแบบนี้ได้แทบจะสมบูรณ์แบบจริง ๆ จนน่าประทับใจเลย :)

 
0126kjw 2025-01-08

ขอบคุณมากครับ! อย่างที่คุณบอก ดูเหมือนว่า Dropbox จะมีกรณีตัวอย่างมาก่อนจริง ๆ ด้วย ซึ่งช่วยให้ผมได้มุมมองที่ดีมากครับ ผมหวังว่าในระดับ OS จะรองรับการทำให้ Unicode เป็นมาตรฐานแบบ NFC โดยค่าเริ่มต้นสำหรับผู้ใช้ภาษาเกาหลี เพื่อที่จะได้ไม่ต้องมีเครื่องมือแบบนี้เลย :)

 
cogurrl 2025-01-08

พอลองรันแล้ว แทนที่จะขึ้นว่า "นักพัฒนาที่ไม่สามารถยืนยันได้...." กลับขึ้นตั้งแต่ตอนเปิดว่า "ไม่สามารถเปิดแอปพลิเคชันได้" และไม่สามารถตรวจสอบได้ในส่วนความปลอดภัยด้วย (Mac 15.2(24C101))

 
0126kjw 2025-01-15

กระบวนการลงนามและรับรองแอปเสร็จสมบูรณ์แล้ว และตอนนี้ได้ดำเนินการแก้ไขให้สามารถใช้งานได้อย่างสะดวกโดยไม่มีข้อผิดพลาดในการรันและปัญหาด้านความปลอดภัย ขอบคุณอีกครั้งสำหรับฟีดแบ็กของคุณ

 
0126kjw 2025-01-08

ขอบคุณที่ช่วยแชร์ปัญหานี้นะครับ! พอตรวจสอบดูแล้วพบปัญหาว่าตั้งค่า deployment target ไว้ที่ 15.1 ครับ เป็นแอปที่ผมใช้คนเดียวเลยอาจจะไม่ได้ใส่ใจจุดนี้มากนักT_T ผมจะปรับให้รองรับ macOS 13.0 ขึ้นไปทั้งหมด แล้วจะแก้ไขไฟล์ release ไว้ให้ครับ! ขอบคุณสำหรับฟีดแบ็กครับ

 
princox 2026-03-08

พอเข้าไปใน App Store แล้วไม่เห็นอะไรเลย ลิงก์นี้ถูกต้องใช่ไหม?!

 
princox 2026-03-08

ขึ้นว่าไม่พบหน้าที่คุณกำลังค้นหาใน App Store!