PHP - อักขระ Unicode ไม่แสดงอย่างถูกต้องในคอนโซล


0

เมื่อใดก็ตามที่ฉันใช้ PHP 7.2 เพื่อพิมพ์สตริงไปยังคอนโซลและมันมีอักขระยูนิโค้ดไปที่คอนโซลมันไม่แสดงอย่างถูกต้อง ตัวอย่างเช่น £ แสดงเป็น ┬ú.

มันไม่ใช่คอนโซลอย่างที่ฉันทำได้ echo £ โดยไม่มีปัญหา

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

ปัญหาเริ่มชัดเจนเมื่อฉันพยายามจับข้อยกเว้นซึ่งมีเครื่องหมาย£อยู่ในสตริง ไม่มีอะไรจะเกิดขึ้น สคริปต์จะหยุดและจะไม่มีข้อผิดพลาดปรากฏขึ้น ฉันใช้เวลากว่าหนึ่งชั่วโมงในการค้นพบว่ามีบางอย่างเกี่ยวกับสัญลักษณ์£ในสตริงที่หยุดการทำงานของ PHP ในแทร็กดังนั้นปัญหาที่เกิดขึ้นกับ PHP คือ - ฉันไม่รู้

ใครบ้างมีความคิดเกี่ยวกับสิ่งที่อาจก่อให้เกิดนี้


PHP ใช้ระบบปฏิบัติการอะไรอยู่?
grawity

1
นี่เป็นปัญหาดั้งเดิมใน Windows แต่ฉันคิดว่ามันได้รับการแก้ไขในเวอร์ชั่น 7.x คุณใช้ Windows 10 หรือไม่ คุณเห็นข้อความแสดงข้อผิดพลาดหรือไม่ถ้าพิมพ์ไปที่ไฟล์?
Álvaro González

ขออภัยฉันลืมพูดถึง ฉันใช้ Windows 7 Ultimate มันใช้งานได้ดี ดูเหมือนจะมีอะไรบางอย่างเปลี่ยนแปลงไป ฉันจะลองบนแท่นขุดเจาะ Win7 อื่นของฉันและดูว่าเกิดอะไรขึ้น ฉันสงสัยว่ามันจะทำงานได้ดี
thefuzzy0ne

คอนโซลของคุณตีความข้อความไม่ใช่ UTF-8 แต่เป็นอย่างอื่นนั่นคือทั้งหมด ที่คุณสามารถทำได้ echo £ ใช้คอนโซล ไม่ได้พิสูจน์อะไรเลยเนื่องจากเป็นการจัดการการเข้ารหัสอินพุตและเอาต์พุตเหมือนกัน
deceze

อาจมีสองประเด็น แต่ก็ไม่ได้อธิบายว่าทำไม PHP ล้มเหลวอย่างเงียบ ๆ เมื่อฉันส่งข้อยกเว้นด้วยข้อความปอนด์ การถอดบล็อก catch จะถูกจับตามที่คาดไว้
thefuzzy0ne
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.