есть ли способ отображать китайские иероглифы на пользовательской странице ошибки лака или отображать статический html-файл в лаке

Я настроил страницу с ошибкой 500 лака, но обнаружил, что она не может отображать китайские иероглифы,

я попытался доставить страницу с ошибкой из статического файла, но она не работает страницы из Varnish


person mk_    schedule 09.06.2012    source источник


Ответы (2)


пример, на который вы указываете, манипулирует содержимым файла с помощью sprintf и strcat, которые, вероятно, плохо работают в UTF- 8 (ваш файл в UTF-8, как указано в заголовке, верно?). Вы можете испытать свою удачу с помощью функции C на основе байтов, такой как memcpy, или использовать функцию копирования/форматирования строки с доказательством utf-8 (никогда не сталкивался с этим в C).

Не могли бы вы описать это не работает более подробно?

person ivy    schedule 11.06.2012
comment
спасибо за ответ, так что извините, у меня нет отзывов до сих пор. Я новичок в C, но после долгих отладок и отслеживаний эта проблема была решена, ниже приведена полная часть Связанных в лак.vcf - person mk_; 03.07.2012

ниже приведена полная часть Связанных материалов в лаке.vcf

C{
  #include <stdio.h>
  #include <stddef.h>
  #include <stdlib.h>
}C
sub vcl_error {

set obj.http.Content-Type = "text/html; charset=utf-8";
set obj.http.Retry-After = "5";
if ((obj.status == 500 || obj.status == 503)&&client.ip !~ flnet){
   C{
     FILE    *infile;
     char    *buffer;
     char fname [50];
     long    numbytes;

        sprintf(fname, "/var/www/html/%d.html", VRT_r_obj_status(sp));
     infile = fopen(fname, "r");
      if(infile == NULL)
         return 1;

       fseek(infile, 0L, SEEK_END);
       numbytes = ftell(infile);
       fseek(infile, 0L, SEEK_SET);
       buffer = (char*)calloc(numbytes, sizeof(char));
       fread(buffer, sizeof(char), numbytes, infile);
       fclose(infile);
       VRT_synth_page(sp, 0, buffer, "<!-- XID: ", VRT_r_req_xid(sp), " -->", vrt_magic_string_end);

       free(buffer);
     return 0;
    }C
  }
person mk_    schedule 03.07.2012