©
やなどの HTML エンティティが ? として表示されます。これは、ページにレンダリングするときと、基になるソースを表示するときの両方で表示されますが、本番用の Jetty サーバー (ディレクトリmdash;
内) を介して提供される場合のみです。webapps
HTML エンティティは、ローカルの Nginx を介して静的ファイルから提供される場合に問題なく表示されます。また、組み込みの Jetty を使用して Pedestal アプリの開発を実行すると、見栄えもよくなります。HTML ヘッドは次のとおりです。
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8" />
<meta content="IE=edge" http-equiv="X-UA-Compatible" />
<meta content="width=device-width, initial-scale=1.0" name="viewport" />
<meta content="Web Site Description" name="description" />
<meta content="The Author" name="author" />
<link href="/images/favicon-128x128.png" type="image/png" rel="shortcut icon" />
<title>A Really Great Title</title>
<link rel="stylesheet" href="/css/bootstrap.css" />
<link rel="stylesheet" href="/css/shared.css" />
<!--[if lt IE 9]>
<script src="https://oss.maxcdn.com/libs/html5shiv/3.7.0/html5shiv.js">
</script>
<script src="https://oss.maxcdn.com/libs/respond.js/1.4.2/respond.min.js">
</script>
<![endif]-->
</head>
これを解決するにはどうすればよいですか?何がうまくいかないのですか?または、それが失敗した場合、どうすればデバッグできますか?
いくつかのアイデア:
まず、本番環境で Jetty 9.1.X を使用しています。私の開発サーバーは(からlein deps :tree
)使用します:
[io.pedestal/pedestal.jetty "0.2.2"]
[javax.servlet/javax.servlet-api "3.0.1"]
[org.eclipse.jetty/jetty-server "8.1.9.v20130131"]
[org.eclipse.jetty.orbit/javax.servlet "3.0.0.v201112011016"]
[org.eclipse.jetty/jetty-continuation "8.1.9.v20130131"]
[org.eclipse.jetty/jetty-http "8.1.9.v20130131"]
[org.eclipse.jetty/jetty-io "8.1.9.v20130131"]
[org.eclipse.jetty/jetty-util "8.1.9.v20130131"]
[org.eclipse.jetty/jetty-servlet "8.1.9.v20130131"]
[org.eclipse.jetty/jetty-security "8.1.9.v20130131"]
再確認する必要がある Jetty 9 のプロダクション設定はありますか?
第二に、私はEnliveを使用しています。次の依存関係に依存しています (からlein deps :tree
):
[enlive "1.1.5"]
[org.ccil.cowan.tagsoup/tagsoup "1.2.1"]
[org.jsoup/jsoup "1.7.2"]
どういうわけか、TagSoupは本番環境と開発環境で異なる動作をしているのだろうか。
更新:
応答ヘッダーは次のとおりです。
HTTP/1.1 200 OK
Set-Cookie: ring-session=eyTI ... <SNIP> ... s%3D;Path=/
Content-Type: text/html;charset=UTF-8
Transfer-Encoding: chunked
Server: Jetty(9.1.3.v20140225)
text/html;charset=UTF-8
Jetty が問題であることを除外しているようです。TagSoup が期待どおりに動作していない可能性があると思います (可能性も高い)。
私は現在、Enlive メーリング リストでこのスレッドを読んでいます: mdash output as question mark .
更新: 私の Clojure テンプレート (Enlive を使用していましたが、Laserに切り替えたばかりですが、この点に関してはどちらも同じように動作します) は、HTML エンティティを Unicode に変換します。問題は、インストールした Jetty 9 が Unicode 文字を処理するように構成されていない (または必要なものを与えていない) ことのようです。