การเปิด google url ด้วยแฮช (#) ล้มเหลว ได้รับการแปลงเป็น% 23


2

บน OSX เมื่อฉันพยายามเปิด url ที่มีแฮช#มันจะถูกแปลงเป็น% 23 และล้มเหลว ตัวอย่างเช่น,

จากพรอมต์คำสั่ง

$ open "https://translate.google.com/#auto/en/ру́сский+язы́к"

ให้ฉันError 404จาก google

The requested URL /%23auto/en/%D1%80%D1%83%CC%81%D1%81%D1%81%D0%BA%D0%B8%D0%B9+%D1%8F%D0%B7%D1%8B%CC%81%D0%BA was not found on this server. That’s all we know.

สิ่งเดียวกันนี้เกิดขึ้นจาก Applescript เช่นกันเมื่อฉันใช้open locationคำสั่ง

สิ่งนี้เกิดขึ้นในตอนท้ายของฉันหรือจากกูเกิล ฉันจะทำให้ URL เหล่านี้ทำงานได้อย่างไร ตามคำตอบนี้ควรทำงาน


แก้ไข:

ผมปิดการใช้งานการเชื่อมต่ออินเทอร์เน็ตของฉันแล้วพยายามที่จะเปิด URL ข้างต้นและผลที่ได้รับการเดียวกันก็กลายเป็น# %23ลองใช้ Chrome ฉันใช้ Firefox ด้วยและผลลัพธ์ก็เหมือนกัน ดังนั้นการเปลี่ยนแปลงจึงเกิดขึ้นโดย OSX เอง

โดยวิธีการถ้าคุณคัดลอกและวางด้านบนลงในเบราว์เซอร์ของคุณมันจะทำงานได้ดีดังนั้น url ก็ดีเหมือนเดิม

สุดท้ายนี้ฉันใช้ Snow Leopard (10.6.8)

แก้ไขแล้ว : ตามคำตอบด้านล่างสตริงการสืบค้นต้องถูกเข้ารหัส หนึ่งซับในคำตอบนี้ช่วย

/bin/echo -n "some foreign text" | php -r "echo urlencode(file_get_contents('php://stdin'));"

คำตอบ:


1

คุณเขียนว่า "ภาษารัสเซีย +"

การแปลเป็นภาษารัสเซียใช้อักขระพิเศษ อักขระพิเศษใน URL ถูกเขียนเป็น "% ??" เทียบเท่าเป็นข้อมูลอ้างอิงสำหรับตัวละครเหล่านี้

ผมมองนี้ขึ้นสำหรับคุณเพื่อให้คุณสามารถดู: http://www.w3schools.com/tags/ref_urlencode.asp

URL ไม่ทราบว่าอักขระพิเศษคืออะไร คุณเขียนโปรแกรมอยู่หรือเปล่า? ถ้าเป็นเช่นนั้นคุณจะต้องหาวิธีที่เท่าเทียมกันในการแปลงรหัสตัวละครของคุณให้เป็น URL ที่สามารถจดจำได้

นี่คือตัวถอดรหัสออนไลน์สำหรับการตรวจสอบเพิ่มเติมที่เกี่ยวข้องกับอักขระพิเศษ: http://www.asiteaboutnothing.net/c_decode-url.html


เมื่อฉันเห็นการตอบสนองของ Google ฉันคัดลอกและวางสตริงที่เข้ารหัสแล้ว แต่ก็ยังล้มเหลวดังนั้นฉันจึงไม่ได้ดูอีกครั้ง หลังจากตรวจสอบลิงก์ w3schools ในคำตอบของคุณฉันลองอีกครั้งและใช้งานได้! ดังนั้นตอนนี้ด้วยความช่วยเหลือของ php หนึ่งซับลิงค์ทำงาน ขอบคุณ.
เพื่อนชื่อ Ben

ดีใจที่ฉันสามารถช่วย ฉันคิดว่ามันอาจเป็น php ฉันพบปัญหาเดียวกันเมื่อสองสามปีที่แล้ว
ejbytes

1

ปัญหาหลักคือopenไม่ใช่เว็บเบราว์เซอร์และไม่สามารถแยกความแตกต่างระหว่างสองกรณีพิเศษขณะที่ส่งข้อมูลไปยังเบราว์เซอร์:

  • #auto(URL ส่วน) ควรจะผ่านไปตามที่เป็น
  • ข้อความอื่นจะต้องมีการเข้ารหัส URL เพื่อรองรับเบราว์เซอร์ "รุ่นเก่า"

เบราว์เซอร์ที่แตกต่างกันอาจจัดการกับ URL เหล่านี้ต่างกันในบรรทัดคำสั่งเมื่อเทียบกับการใช้ส่วนต่อประสาน หากคุณเปิด URL ที่กำหนดในบรรทัดคำสั่งที่เรียกใช้ Firefox โดยตรงจะทำงานตามที่คาดไว้

อ่านเพิ่มเติม:


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