Question

Pouvez-vous m'aider s'il vous plaît?À la page web, j'ai besoin d'imprimer ce:

l'équipe 1 vs équipe 2

l'équipe 3 vs équipe de 4

équipe de 5 contre l'équipe de 6

l'équipe 7 vs team 8

Mon code:

<erl>
first_team_write(Head) ->
  {ehtml,
    %[{text,[], f("~p vs ", [Head])}]}.        % try
    [{p,[], [Val, " vs "]} || Val <- [Head]]}. % different
second_team_write(Head) ->
  {ehtml,
    %[{text,[], f("~p", Head)},                % ways
    [{p,[], [Head]},                           %
    {p,[], []}]}.

write_teams([], Num) ->
  Num;

write_teams([Head|Tail], Num) ->
if
  (Num rem 2) /= 0 ->
    first_team_write([Head]),
    io:format("~p vs ", [Head]),  %% debug
    write_teams(Tail, Num+1);
  (Num rem 2) == 0 ->
    second_team_write(Head),
    io:format("~p~n", [Head]),  %% debug
    write_teams(Tail, Num+1)
end.


out(A) ->
  application:start(odbc), 
  ConnString = 
  %"Driver={MySQL ODBC 5.2 ANSI Driver};" ++
  "Driver={MySQL ODBC 5.2 Unicode Driver};" ++
  "Server=127.0.0.1;Database=erandom;" ++ 
      "User=root;Password=1q2w3e;" ++ 
      "Option=3;" ++
      "CharSet=utf8;",
      {ok, Conn} = odbc:connect(ConnString, []), 
      % Cyrillic results
      Results = odbc:sql_query(Conn, "select team_name from teams where id in (select team_id from leagues where league_name = 'First League')"), 
      %{selected, [Selector], Results} = odbc:sql_query(Conn, "select team_name from teams where team_name in ('Sporting', 'Old School')"),
      %{selected, [Selector], Results} = odbc:sql_query(Conn, "select team_name from teams where id in (select team_id from leagues where league_name = 'First League')"),
      odbc:disconnect(Conn),
      application:stop(odbc),
      TeamList = element(3, Results),
      {ehtml,
        [{h4,[], "Пары этого тура:"},
        {hr},
          write_teams(TeamList,1)
      ]}.

</erl>

Résultat:Ma page web est vide.Ce que je fais mal?Je vois dans la console de débogage:

1>
=INFO REPORT==== 25-Feb-2014::23:08:27 ===
    application: odbc
    exited: stopped
type: temporary
1> {[208,159,209,128,208,190,208,188,208,181,209,130,208,181,208,185]} vs 1> {[208,161,208,145,208,162]}
1> {[208,158,208,187,208,184,208,188,208,191]} vs 1> {[208,159,209,128,208,190,208,179,209,128,208,181,209,129,209,129]}
1> {[208,164,208,154,32,208,148,209,142,208,182,208,184,208,189,208,176]} vs 1> {"Old school"}
1> {[208,161,208,191,208,176,209,128,209,130,208,176,208,186]} vs 1> {[208,160,208,190,209,130,208,190,209,128]}
1> {"Sporting"} vs 1> {[208,161,208,190,208,191,209,128,208,190,209,130,208,184,208,178,208,187,208,  181,208,189,208,184,208,181]}
Était-ce utile?

La solution

Je crois que vous êtes de ne pas spécifier le jeu de caractères correctement dans votre réponse HTTP.Tout d'abord, puisque vous avez Cyrillique texte intégré dans votre .le pian page, assurez-vous que votre éditeur est de l'enregistrer en UTF-8.Comment accomplir cela dépend de votre environnement de développement et de l'éditeur, mais j'utilise emacs, donc je viens d'ajouter le code HTML suivant commentaire sur le haut de la .le pian fichier:

<!-- -*- coding: utf-8 -*- -->

Le problème suivant est de mettre le jeu de caractères défini correctement dans les en-têtes HTTP de la réponse.Pour ce faire, définissez la Content-Type l'en-tête de manière appropriée dans votre réponse comme ceci:

[{header, {content_type, erase}},
 {header, {content_type, "text/html; charset=UTF-8"}},
 {ehtml,
  [{h4,[], "Пары этого тура:"},
   {hr},
      write_teams(TeamList,1)
  ]}].

Notez que l'ensemble du type de retour est un Erlang liste.Le premier tuple dans la liste efface le défaut Content-Type l'en-tête que le Pian s'applique par défaut .le pian pages.Le deuxième tuple dans la liste spécifie la valeur correcte pour Content-Type y compris l'UTF-8 jeu de caractères.Le troisième élément de la liste est la même ehtml tuple vous avez spécifié dans votre énoncé du problème ci-dessus.

BTW, vous pouvez construire le Pian avec l'UTF-8 comme jeu de caractères par défaut en exécutant le Pian configure script comme indiqué ci-dessous:

configure --with-defaultcharset=UTF-8

Après cela, reconstruire le Pian avec make comme à l'habitude.Si vous faites cela, les deux n-uplets pour le réglage de la Content-Type de votre réponse ne sont plus nécessaires, car UTF-8 serait le jeu de caractères par défaut pour toutes les réponses.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top