2014-04-29 17 views
7

Chúng tôi đang triển khai chức năng chia sẻ với TencentQQ sử dụng URL chia sẻ tĩnh của chúng. Chúng tôi có một URL mã hóa: "http://www.testurl.com/product/this-is-a-product-%E7%9F%AD%E8%A3%A4/id-000000"TencentQQ - URL bị phân tách khi trộn các URL tiếng Anh và tiếng Anh (decodeURIComponent)

Khi liên kết này được chia sẻ qua TencentQQ sử dụng liên kết này: http://share.v.t.qq.com/index.php?c=share&a=index&url=http://www.testurl.com/product/this-is-a-product-%E7%9F%AD%E8%A3%A4/id-000000&title=This%20is%20a%20test&appkey=000000000

Bạn sẽ thấy trên nguồn cấp dữ liệu URL đã được chia vào lúc bắt đầu của các nhân vật Mandarin. URL Being Split

tôi tưởng tượng rằng họ đang sử dụng decodeURIComponent khi xử lý URL, mà tôi nhận thấy có tác dụng tương tự khi thực hiện các công cụ dev của Chrome console:

Chrome Dev Tools

Tôi đoán câu hỏi ở đây là - am Tôi đang làm gì sai khi mã hóa URL này? Có lý do gì khiến URL bị tách ra khi bắt đầu các ký tự tiếng Quan Thoại không?

+2

Tôi không nghĩ đó là 'decodeURIComponent' là vấn đề ở đây, có nhiều khả năng cụm từ thông dụng làm cho nó hiển thị dưới dạng liên kết. Nó trả về những gì nó cần. Trong Bảng điều khiển Chrome, tôi có thể hiểu tại sao, trong mã bạn đang gặp sự cố, tôi không biết. Bạn đã cố gắng liên hệ với bộ phận hỗ trợ chưa? –

Trả lời

3

URL của bạn không được mã hóa, có vẻ như mã được mã hóa vì nó sử dụng ký tự không phải ASCII/không phải Latinh, bất kỳ URL nào có URL khác bên trong là thông số cần được mã hóa, câu chuyện dài, đây là các giải pháp:

function urlShare(url,title,appkey){ 
    return 'http://share.v.t.qq.com/index.php?c=share&a=index&url='+encodeURIComponent(url)+'&title='+encodeURIComponent(title)+'&appkey='+appkey 
} 

Chỉ cần gọi chức năng này với URL, Title and appkey (không biết nếu appkey cần phải được mã hóa):

urlShare('http://www.testurl.com/product/this-is-a-product-%E7%9F%AD%E8%A3%A4','A Title','id-000000') 

Nó sẽ trả về một URL an toàn mà thực sự công trinh.

Các vấn đề liên quan