A abertura do URL do Google com hash (#) falha; é convertido em% 23

0

No OSX, quando tento abrir um URL que contém um hash # , ele é convertido em% 23 e ele falha. Por exemplo,

No prompt de comando,

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

me dá um Error 404 do 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.

O mesmo acontece com o Applescript quando uso o comando open location .

Isso está acontecendo no meu final ou nos googles? Como posso obter essas URLs para trabalhar? De acordo com esta resposta , isso deve funcionar.

EDITAR:

Eu desativei minha conexão com a Internet e tentei abrir o URL acima e os resultados foram os mesmos, # foi transformado em %23 . Também tentei o Chrome, eu estava usando o Firefox, e o resultado é o mesmo. Então a mudança está acontecendo pelo próprio OSX.

A propósito, se você copiar e colar as informações acima em seu navegador, ele funcionará bem, então a URL está bem como está.

Por fim, estou usando o Snow Leopard (10.6.8)

RESOLVIDO : Conforme a resposta abaixo, a string de consulta teve que ser codificada. O um folheto nesta resposta ajudou,

/bin/echo -n "some foreign text" | php -r "echo urlencode(file_get_contents('php://stdin'));"
    
por Dude named Ben 29.12.2015 / 10:21

2 respostas

1

Você escreveu "idioma russo +".

A tradução em russo usa caracteres especiais. Caracteres especiais na URL estão sendo codificados como "% ??" equivalentes como referência para esses caracteres.

Eu procurei por você para que você possa ver: link .

O URL não sabe o que é um caractere especial. Você está programando? Nesse caso, você terá que encontrar uma forma equivalente de transcodificar seus caracteres em algo que o URL possa reconhecer.

Aqui está um decodificador on-line para investigação adicional relevante para caracteres especiais: link

    
por 29.12.2015 / 11:22
1

Essencialmente, o problema é que open não é um navegador da Web e não pode distinguir entre dois casos especiais quando passa as informações para um navegador:

  • o #auto (fragmento de URL) deve ser passado como está
  • o outro texto tem que ser codificado por URL para acomodar navegadores "mais antigos".

Navegadores diferentes podem lidar com esses URLs de maneira diferente na linha de comando, em vez de usar a interface deles. Se você abrir o URL fornecido diretamente na linha de comando do Firefox, ele funcionará como esperado.

Leitura adicional:

por 29.12.2015 / 12:20